题解:CF731E Funny Game

· · 题解

我们不关心谁先手谁后手,只要关注得分差。

dp_i 为从后向前考虑到第 i 位的最大得分差,则:

dp_i = \max_{j \in [i + 1, n]} \left \{ pre_j - dp_j \right \} 代码: ```cpp #include <bits/stdc++.h> #define int long long using namespace std; const int N = 2e5 + 5; int n, maxx, a[N], dp[N], pre[N]; signed main() { ios_base :: sync_with_stdio(NULL); cin.tie(nullptr); cout.tie(nullptr); cin >> n; for(int i = 1 ; i <= n ; ++ i) cin >> a[i], pre[i] = pre[i - 1] + a[i]; maxx = pre[n]; for(int i = n - 1 ; i ; -- i) { dp[i] = maxx; maxx = max(maxx, pre[i] - dp[i]); } cout << dp[1]; return 0; } ```