题解:CF731E Funny Game
endswitch
·
·
题解
我们不关心谁先手谁后手,只要关注得分差。
设 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;
}
```