题面

一道需要一定思考的 \(\text{DP}\) 。

设 \(dp_i\) 表示第 \(i\) 步走的人能得到的最大分数, \(sum_i\) 表示 \(\sum_{j=i}^n a_j\) ,即 \(sum_i\) 为序列 \(\{a_i\}\) 的后缀和。

状态转移方程: \(dp_i=\max\{dp_{i+1}, sum_{i+1}-dp_{i+1}+a_i\}\) 。

解释一下:

  • \(dp_{i+1}\) 的意思是第 \(i+1\) 个决策的人将 \(a_{i+1}\) 给了对方,自己还是第 \(i\) 个决策的人;
  • \(sum_{i+1}-dp_{i+1}+a_i\) 的意思是第 \(i+1\) 个决策的人不是第 \(i\) 个决策的人,第 \(i+1\) 个决策的人得到了 \(dp_{i+1}\) 的分数,则第 \(i+1\) 轮后第 \(i\) 个决策的人得到了 \(sum_{i+1} - dp_{i+1}\) 的分数,第 \(i\) 个决策的人在第 \(i\) 轮还得到了 \(a_i\) 的分数。

可能比较难理解…

代码写起来也很简单:

#include <bits/stdc++.h>
#define DEBUG fprintf(stderr, "Passing [%s] line %d\n", __FUNCTION__, __LINE__)
#define itn int
#define gI gi using namespace std; inline int gi()
{
int f = 1, x = 0; char c = getchar();
while (c < '0' || c > '9') {if (c == '-') f = -1; c = getchar();}
while (c >= '0' && c <= '9') x = x * 10 + c - '0', c = getchar();
return f * x;
} int n, m, a[55], sum[55], dp[55]; int main()
{
//freopen(".in", "r", stdin);
//freopen(".out", "w", stdout);
n = gi();
for (int i = 1; i <= n; i+=1) a[i] = gi();
for (int i = n; i >= 1; i-=1) sum[i] = sum[i + 1] + a[i];
for (int i = n; i >= 1; i-=1) 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;
}

最新文章

  1. 关于i++,++i 的理解
  2. 解决1130 Host &#39;localhost&#39; is not allowed to connect to this MySQL server
  3. codevs 1690 开关灯 线段树水题
  4. 百度地图API首页 -- 鼠标经过:类似翻页效果和 类似锚点链接效果
  5. JFrame面板
  6. 时间日期设置--ctime头文件
  7. SQL Server DATEDIFF() 函数
  8. Ubuntu 12.04下虚拟磁带库mhvtl的安装和使用
  9. &quot;xxxx&quot;.zip:这个压缩文件格式未知或者数据已经被损坏,打不开压缩文件,总出现这个提示的解决方法
  10. HTML5 离线缓存忽略主页实例
  11. Jenkins SSH timeout
  12. Session获取不到的情况及解决办法(源码解析)
  13. 《Java从入门到放弃》JavaSE入门篇:异常
  14. vue实例讲解之axios的使用
  15. 测试修改gcs_server_processes参数
  16. 用类模拟C风格的赋值+返回值
  17. [CF 1043F] Make It One
  18. ping域名和ping IP时速度不同的原因
  19. jsp 学习 第1步 - 引入 jstl
  20. 高可用群集HA介绍与LVS+keepalived高可用群集

热门文章

  1. 044.Python线程的数据安全
  2. 通过/dev/mem操作物理内存
  3. js内置对象的常用属性和方法(Array | String | Date | Math)
  4. 【优惠&amp;正版】超级硬盘数据恢复软件(SuperRecovery)7.0正版注册码(39元一机终身授权,支持最新版)
  5. JN_0011:改变PPT的页面尺寸,并导出图片
  6. java 快速生成树的方式
  7. Deepin Linux 升级wine应用
  8. win下的终端使用指南
  9. 886. 求组合数 II(模板)
  10. udp_demo(傻瓜来回发送)