【算法】区间DP+博弈论

【题解】其实它都不是博弈题……

很自然的可以设f[i][j]表示i~j先手可取得的最大价值。

容易得到转移式:f[i][j]=max(a[i]+sum[i+1~j]-f[i+1][j],a[j]+sum[i~j-1]-f[i][j-1])。

化简得到f[i][j]=sum[i~j]-min(f[i+1][j],f[i][j-1])。

然后预处理前缀和,按区间从小到大做即可。

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int maxn=;
int a[maxn],f[maxn][maxn],sum[maxn],n;
int main()
{
scanf("%d",&n);
sum[]=;
for(int i=;i<=n;i++){scanf("%d",&a[i]);sum[i]=sum[i-]+a[i];}
for(int p=;p<n;p++)
for(int i=;i<=n-p;i++)
f[i][i+p]=sum[i+p]-sum[i-]-min(f[i+][i+p],f[i][i+p-]);
printf("%d %d",f[][n],sum[n]-f[][n]);
return ;
}

因为按区间大小递推所以还可以缩一维空间。

极大极小搜索是什么,可以吃吗?

最新文章

  1. wex5 教程 之 图文讲解 登陆,注册,页面跳转
  2. 关于 BCSCTL1 = CALBC1_12MHZ;DCOCTL = CALDCO_12MHZ; 的疑问
  3. WCF netTcp配置
  4. CreateJS第0章- Canvas基础
  5. [LeetCode] 147. Insertion Sort List 解题思路
  6. cocos2dx新建工程分析
  7. sql数据导出导入格式化
  8. WordPress-基础设置之常规设置
  9. [转]python变量作用域的有趣差别
  10. 单点登录实现机制:桌面sso
  11. Java最最常用的100个类排序(非官方)
  12. jQuery第七章插件的编写和使用
  13. MSSQL 临时表和公用表使用案例
  14. Redis-Sentinel Redis的哨兵模式
  15. 再谈git和github-深入理解-2
  16. 使用 vmstat, mpstat 和 sar 查看系统运行参数
  17. __stdio_common_vsnprintf_s,该符号在函数 _vsnprintf_s_l 中被引用
  18. perl 读取一个文件 替换文件的关键词 把数据替换到新的文件
  19. 打印页面时a标签不显示URL的方法
  20. dedecms列表页调用文章正文内容的方法

热门文章

  1. Sqoop 1.4.6 安装配置
  2. ConcurrentHashMap弱一致性
  3. 【bzoj3932】[CQOI2015]任务查询系统 离散化+主席树
  4. linux系统过一两分钟就断开的时间更改
  5. Python 源码剖析(二)【整数对象】
  6. [SDOI2015]约数个数和 莫比乌斯反演
  7. 用Docker搭建Nexus私服
  8. 【BZOJ5329】【SDOI2018】战略游戏(圆方树,虚树)
  9. BZOJ1179 [Apio2009]Atm 【tarjan缩点】
  10. iOS中产生随机数的方法