大意: 给定$n$元素序列, 两个人从两端轮流拿数, 每一步假设对手上次取k, 那么只能取k或k+1, 先手第一步取1或2, 直到不能拿时停止. 先手要最大化两人数字和的差, 后手要最小化, 求最后差是多少.

显然状态数是$O(n^2)$的, 直接暴力DP

#include <iostream>
#include <sstream>
#include <algorithm>
#include <cstdio>
#include <math.h>
#include <set>
#include <map>
#include <queue>
#include <string>
#include <string.h>
#include <bitset>
#define REP(i,a,n) for(int i=a;i<=n;++i)
#define PER(i,a,n) for(int i=n;i>=a;--i)
#define hr putchar(10)
#define pb push_back
#define lc (o<<1)
#define rc (lc|1)
#define mid ((l+r)>>1)
#define ls lc,l,mid
#define rs rc,mid+1,r
#define x first
#define y second
#define io std::ios::sync_with_stdio(false)
#define endl '\n'
#define DB(a) ({REP(__i,1,n) cout<<a[__i]<<' ';hr;})
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;
const int P = 1e9+7, INF = 0x3f3f3f3f;
ll gcd(ll a,ll b) {return b?gcd(b,a%b):a;}
ll qpow(ll a,ll n) {ll r=1%P;for (a%=P;n;a=a*a%P,n>>=1)if(n&1)r=r*a%P;return r;}
ll inv(ll x){return x<=1?1:inv(P%x)*(P-P/x)%P;}
inline int rd() {int x=0;char p=getchar();while(p<'0'||p>'9')p=getchar();while(p>='0'&&p<='9')x=x*10+p-'0',p=getchar();return x;}
//headconst int N = 4010;
int n, a[N];
int *dp[2][N][N];
int o;
int dfs(int tp, int l, int r, int k) {if (!dp[tp][l][r]) { int *p = new int[100];memset(p,0x3f,sizeof(int)*100);dp[tp][l][r] = p;}int &ans = dp[tp][l][r][k];if (ans!=INF) return ans;if (r-l+1<k) return ans=0;if (r-l+1==k) return ans=tp?a[r]-a[l-1]:a[l-1]-a[r];if (tp==1) return ans=max(dfs(0,l+k,r,k)+a[l+k-1]-a[l-1],dfs(0,l+k+1,r,k+1)+a[l+k]-a[l-1]);return ans=min(dfs(1,l,r-k,k)-a[r]+a[r-k],dfs(1,l,r-k-1,k+1)-a[r]+a[r-k-1]);
}int main() {scanf("%d", &n);REP(i,1,n) scanf("%d", a+i),a[i]+=a[i-1];printf("%d\n", dfs(1,1,n,1));
}

转载于:https://www.cnblogs.com/uid001/p/10620350.html

Financiers Game CodeForces - 737D (博弈论,区间dp)相关推荐

  1. Codeforces 1025D(区间dp)

    容易想到设f[i][j][k]为i~j区间以k为根是否能构成bst.这样是O(n4)的.考虑将状态改为f[i][j][0/1]表示i~j区间以i-1/j+1为根能否构成bst.显然如果是i-1作为根的 ...

  2. 「Codeforces」598E (区间dp)

    题意:原题在这 有t组输入,每次有n*m的巧克力,要吃k块 只能整行切,代价是长度的平方 求最小代价 做法:(详见行内注释) 枚举切几块和该情况下横切还是纵切 特判: 切0块.没有巧克力.切一整块 暴 ...

  3. Leetcode1690. 石子游戏 VII[C++题解]:带有博弈论的区间dp

    文章目录 题目分析 状态表示 状态转移 题目链接 题目分析 补充博弈论的做题想法:让最坏情况下最好.在很多决策中,考虑所有的最坏情况,选其中最好的一个. 本题分析: 刚开始因为是个贪心题目,两个人每次 ...

  4. CodeForces - 1312E Array Shrinking(区间dp)(通俗易懂)

    CodeForces - 1312E Array Shrinking(区间dp) 题目链接: 没做出来,看了一下别人的题解,才A掉.但网上没发现一篇讲得比较易懂的题解,所以就准备写一篇再加上我自己的理 ...

  5. Codeforces 508E Arthur and Brackets 区间dp

    Arthur and Brackets 区间dp, dp[ i ][ j ]表示第 i 个括号到第 j 个括号之间的所有括号能不能形成一个合法方案. 然后dp就完事了. #include<bit ...

  6. CodeForces - 1312E Array Shrinking(区间dp)

    题目链接:点击查看 题目大意:给出 n 个数,现在可执行的操作是: 找到相邻且数值相等的两个数,即 abs( i - j ) == 1 && a[ i ] == a[ j ] 使得两个 ...

  7. Codeforces Round #655 (Div. 2) E. Omkar and Last Floor 区间dp + 巧妙的状态设计

    传送门 题意: 思路: 按照贪心的思路来考虑的话,显然是每一列111的个数越多越好,所以我们能放到一列就放到一列.设f[l][r]f[l][r]f[l][r]为在[l,r][l,r][l,r]内,区间 ...

  8. 【CodeForces - 245H 】Queries for Number of Palindromes (带容斥的区间dp)

    题干: You've got a string s = s1s2... s|s| of length |s|, consisting of lowercase English letters. The ...

  9. Codeforces Gym100543L Outer space invaders 区间dp 动态规划

    原文链接https://www.cnblogs.com/zhouzhendong/p/CF-Gym100543L.html 题目传送门 - CF-Gym100543L 题意 $T$ 组数据. 有 $n ...

最新文章

  1. 公司Windows Office升级项目总结
  2. OpenvSwitch — ovs-db 数据库
  3. js websocket同步等待_WebSocket硬核入门:200行代码,教你徒手撸一个WebSocket服务器...
  4. 可遇不可求的BUG之采用MYSQL odbc 3.51访问数据库返回值缺失
  5. 《OKR源于英特尔和谷歌的目标管理利器》读书笔记
  6. Codeforces Round #179 (Div. 2): D. Greg and Graph(Floyd)
  7. 《Python机器学习——预测分析核心算法》——2.2 分类问题:用声纳发现未爆炸的水雷...
  8. 设计艺术学院院长 读《未来产品的设计》这本书
  9. loading加载的gif图
  10. 手机网页form表单样式_超全面!13种表单样式的设计方式都在这了
  11. 开放有限元分析计算平台介绍
  12. linux的dlan脚本,Linux DLNA
  13. C# 01.04 占位符
  14. java调adobe打印_Java报表工具打印方案集锦 | 改变自己
  15. Web实现:flex弹性布局三栏自适应布局
  16. 前端开发——在线工具推荐
  17. 技术状态管理(六)-技术状态审核
  18. 什么是经销商管理系统?企业经销商管理系统优势有哪些?
  19. 思科---北京某销售公司真实网络环境拓扑(图多杀猫)
  20. 服务器申请系统,政务云平台服务器申请

热门文章

  1. 深入探索JVM自动资源管理
  2. 新概念英语(1-73)The way to King Street
  3. Tungsten Replicator 多环境复制工具安装方法
  4. zabbix之rpm简单快速安装详解
  5. 实现基于Spring框架应用的权限控制系统(转)
  6. vivado中如何导入ise工程
  7. Camstasia studio渲染(生成)视频
  8. 反弹模型(bounce model)----adot, H, Hdot变化图
  9. Django开发实战
  10. IBM发布全球首台商用量子计算机