专栏文章
题解:CF859C Pie Rules^_^
CF859C题解参与者 2已保存评论 1
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 1 条
- 当前快照
- 1 份
- 快照标识符
- @miqqztk1
- 此快照首次捕获于
- 2025/12/04 09:19 3 个月前
- 此快照最后确认于
- 2025/12/04 09:19 3 个月前
思路:
容易发现 Bob 得分一定比 Alice 高,所以我们只需要考虑当 Alice 用最优策略时 Bob 的最高得分,Alice 的得分就是总数减去 Bob 的得分。
思考什么情况下会给对方,什么情况下会给自己。
根据样例分析:
CPP3
141 592 653
若 Bob 把 给到 Alice,那么他也会把 给 Alice,因为他选 比选 更优。但即便如此,Alice 得到了 ,即 。所以 Bob 必须选 。
通过以上分析,我们发现不易确定当前这一步选的在下一步是否最优,也就是有后效性,所以正难则反,设 表示从 到 的最优值。
如果选这个值,那么下一个位置的决策就给了 Alice,那么 就会给 Alice。我们对于 Bob 来讲,就相当于减去了 ,这时的 就是第 个数到第 个数的和,所以再维护一个前缀和就行了。
如果不选这个值,那么就等于
设 表示从 到 的后缀和,则状态转移方程为:
AC Code
CPP#include<bits/stdc++.h>
using namespace std;
int n,a[55],sum[55],f[55];
int main() {
cin>>n;
for(int i=1; i<=n; i++) cin>>a[i];
for(int i=n; i>=1; i--) sum[i]=sum[i+1]+a[i];
for(int i=n; i>=1; i--) f[i]=max(f[i+1],sum[i+1]-f[i+1]+a[i]);
cout<<sum[1]-f[1]<<' '<<f[1];
return 0;
}
相关推荐
评论
共 1 条评论,欢迎与作者交流。
正在加载评论...