您的位置:首页 > 其它

Codeforces 731E 逆推(博弈)

2016-10-19 18:43 295 查看
题意:每个人每次拿一次往后拿一次前缀和,问在双方都选择最优策略的情况下(都尽量使自己减去对方的值最大),先手拿的减去后手拿的得分的值。

思路:因为是最优策略,每个人拿的是在考虑对方也是最优策略下的最优策略。

最后ans=a[s]+-a[i]+-a[i+t]+-….+-a
.每个a[i]的选择都是最优,也就是在后面最优的情况的最优解,但a
肯定有人要选,所以逆推,当一个人选了a
(这已经是那个人的最优解)另一人在这一基础上选一个最优解,直到没有为止。

#include<bits/stdc++.h>
using namespace std;
#define mod 1000000007
#define PI acos(-1.0)
#define INF 0x3f3f3f3f
typedef long long LL;
typedef unsigned long long ULL;

int n,tot,i,a[200010];

int main()
{
scanf("%d",&n);
for(i=1;i<=n;i++)
scanf("%d",&a[i]),a[i]+=a[i-1];
tot=a
;
for(i=n-1;i>1;i--)
tot=max(tot,a[i]-tot);
printf("%d\n",tot);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: