Pie Rules CodeForces - 859C(DP+思维)

Pie Rules

题目链接:CodeForces - 859C
题意:n个pie, 按顺序给出大小, 两个人吃pie, 有一个令牌, 拿着令牌的人决定当前的pie分给谁, 然后没有分到pie的人在下一轮将持有令牌, 问左后两个人分别能分到多少pie;
每个令牌持有者有两种选择:
一:把当前pie分给自己, 令牌交出去;
二:把当前pie分给对方, 留下令牌;
已知初始状态是Bob持有令牌, 这时已经确定的状态, 最后持有令牌的人并不确定, ;
每个人在每一轮的选择其实是已经唯一的了, 因为两个人都想让自己的利益最大化, 逆推一下, 推到1时就是Bob拿令牌的初始状态了
如果dp[i]表示第i轮持有令牌者得到的pie, dp[i]=max(dp[i+1](自己留下令牌), sum[i~n]-dp[i+1](把令牌交出去));
#include 
#include 
#include 
#include 
#include 
#include 
using namespace std;
int main(){
	int n;
	scanf("%d", &n);
	int a[60], dp[60], sum[60];
	for(int i=1; i<=n; i++){
		scanf("%d", &a[i]);
	}
	dp[n+1]=sum[n+1]=0;
	for(int i=n; i>0; i--){
		sum[i]=sum[i+1]+a[i];
		dp[i]=max(dp[i+1], sum[i+1]-dp[i+1]+a[i]);
	}
	printf("%d %d\n", sum[1]-dp[1], dp[1]);
	return 0;
}


你可能感兴趣的:(怒刷DP,思维,模拟)