for (int i = std::max(1, k - n); i < std::min(n + 1, (k + 1) / 2); i++) {
int j = k - i;
if (j >= 1 && j <= n && j > i) {
ans += std::min(f[i], f[j]);
}
}
if (k % 2 == 0) {
int mid = k / 2;
if (mid >= 1 && mid <= n) {
ans += f[mid] / 2;
}
}
std::cout << ans << "\n";
}
}
复制代码
D. Subtract Min Sort
标题大意
有n个数字,可以多次执行 a i − m i n ( a i , a i − 1 ) a_i - min(a_i, a_{i - 1}) ai−min(ai,ai−1), a i − m i n ( a i − 1 , a i − 1 ) a_i - min(a_{i - 1}, a_{i - 1}) ai−min(ai−1,ai−1),问末了能否让序列单调不递减
解题思绪