Bootstrap

Codeforces Round 919 (Div. 2)

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';
}
;