B. Summation Game
题意
输入
输出
思路
遇到两人博弈问题,可以分别贪心,先贪心一个固定下来,然后遍历贪心另一个人
void solve()
{
int n, k, x;
cin >> n >> k >> x;
vector<int> arr(n + 1);
int *s = new int[n + 1];
s[0] = 0;
fer(i, 1, n + 1) cin >> arr[i];
sort(all(arr));
fer(i, 1, n + 1) s[i] = s[i - 1] + arr[i];
int ans;
fer(i, 0, k + 1)
{
int res = 0, l = min(x, n - i); // 可变号数量
res = s[n - i] - 2 * (s[n - i] - s[n - i - l]);
if (i == 0)
ans = res;
else
ans = max(ans, res);
}
cout << ans << '\n';
}