博弈论+区间dp

有博弈论吗?大约只有一个博弈论的壳子

设 dp[i][j] 表示区间 i ~ j 先手最多能取多少,

它可以由 i ~ j - 1 与 i + 1 ~ j 来转移,

等于上述两个区间中后手的最大值 + 选的数

#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
using namespace std;
const int MAXN = 105;
int init() {
int rv = 0, fh = 1;
char c = getchar();
while(c < '0' || c > '9') {
if(c == '-') fh = -1;
c = getchar();
}
while(c >= '0' && c <= '9') {
rv = (rv<<1) + (rv<<3) + c - '0';
c = getchar();
}
return fh * rv;
}
int num[MAXN], n, pre[MAXN], dp[MAXN][MAXN];
int main() {
freopen("in.txt", "r", stdin);
n = init();
for(int i = 1 ; i <= n ; i++) {
num[i] = init();
pre[i] = pre[i - 1] + num[i];
dp[i][i] = num[i];
}
for(int k = 2 ; k <= n ; k++) {
for(int i = 1 ; i + k - 1 <= n ; i++) {
int j = i + k - 1;
dp[i][j] = max(pre[j - 1] - pre[i - 1] - dp[i][j - 1] + num[j],
pre[j] - pre[i] - dp[i + 1][j] + num[i]);
}
}
printf("%d %d\n",dp[1][n], pre[n] - dp[1][n]);
fclose(stdin);
return 0;
}

最新文章

  1. ABAP实现屏幕自己刷新和跳转功能
  2. 转载:bootstrap, boosting, bagging 几种方法的联系
  3. border边框的宽度/样式/颜色 全部值
  4. PHP内置函数file_put_content(),将数据写入文件,使用FILE_APPEND 参数进行内容追加
  5. linux性能监测与优化
  6. 写给新入IT的新人们
  7. SARscape5.2哨兵1A数据的读取
  8. windbg命令学习4
  9. 「C」 数组、字符串、指针
  10. 如何使用Vue2做服务端渲染
  11. MyEclipse去除网上复制下来的代码带有的行号
  12. 即时作图新工具—ProcessOn【推荐】…
  13. AC自动机算法详解 (转载)
  14. Linux CFS调度器之task_tick_fair处理周期性调度器--Linux进程的管理与调度(二十九)
  15. js map()与forEach()的用法与区别
  16. 第23课 可变参数模板(4)_Optional和Lazy类的实现
  17. Top k问题的讨论(三种方法的java实现及适用范围)
  18. Spring MVC 中急速集成 Shiro 实践
  19. dp——01背包
  20. 基于windows的mongodb不支持mongodbsniff等其他一些功能

热门文章

  1. 解决Errno::ENOENT: No Such File or Directory - Jekyll ~ Octopress and El Capitan
  2. 火狐浏览器返回不加载JS
  3. shell脚本,如何监控mysql数据库。
  4. HTML防止重复提交
  5. uilabel自动换行
  6. ios 序列化
  7. Comet OJ 热身赛-principal
  8. [LUOGU] P3128 [USACO15DEC]最大流Max Flow
  9. [LUOGU] P1111 修复公路
  10. linux中复制文件夹的所有文件到指定目录