题目描述

农夫约翰的奶牛喜欢玩硬币游戏,因此他发明了一种称为“Xoinc”的两人硬币游戏。 初始时,一个有N(5 <= N <= 2,000)枚硬币的堆栈放在地上,从堆顶数起的第I枚硬币的币值为C_i (1 <= C_i <= 100,000)。 开始玩游戏时,第一个玩家可以从堆顶拿走一枚或两枚硬币。如果第一个玩家只拿走堆顶的一枚硬币,那么第二个玩家可以拿走随后的一枚或两枚硬币。如果第一个玩家拿走两枚硬币,则第二个玩家可以拿走1,2,3,或4枚硬币。在每一轮中,当前的玩家至少拿走一枚硬币,至多拿走对手上一次所拿硬币数量的两倍。当没有硬币可拿时,游戏结束。 两个玩家都希望拿到最多钱数的硬币。请问,当游戏结束时,第一个玩家最多能拿多少钱呢?

输入

第1行:1个整数N

第2..N+1行:第i+1行包含1个整数C_i

输出

第1行:1个整数表示第1个玩家能拿走的最大钱数。

样例输入

5
1
3
1
7
2

样例输出

9

提示

样例说明:第1个玩家先取走第1枚,第2个玩家取第2枚;第1个取走第3,4两枚,第2个玩家取走最后1枚。

不要看到博弈论就心里打怵,其实只是用到一些简单的博弈思想qwq。这道题主要还是dp,那么dp状态怎么描述呢?首先不能确定最后取硬币的是先手的人还是后手的人,所以可以考虑把状态倒着推,最终答案用先手的人第一次取的状态表示。那么就可以把状态描述成f[i][j]表示上一个人取了j个,还剩下i个,当前人在后续步骤中(包括当前这次取的)能获得的最大值,s[i]表示最后i个的价值和(就是后缀和)。假设当前人是第一个人,他取了k个(k<=2*j),第二个人之后能获得的最大值就是f[i-k][k],那么想让第一个人这次及之后能获得最大值,就要让f[i-k][k]尽量小,那么只要枚举k,用s[i]-min{f[i-k][k]}就是第一个人的最大值。但这样枚举k一定会TLE,不过可以发现f[i][j]和f[i][j-1]之间只差了f[i-2*j][2*j]和f[i-2*j+1][2*j-1]两个状态,所以可以把f[i][j]先赋成f[i][j-1]再与这两个状态比较一下就行了,但比较前要先判断i和这两个数(2*j和2*j-1)之间大小关系。但最后答案是什么呢?我们并不知道先手的人第一次取了1个还是2个,那么可以假设前面有一个第0号硬币被第二个人取走了,这样最终结果就是f[n][1].虽然状态是倒着推,但为了方便可以倒着读入正着转移.

最后附上代码.

#include<cmath>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
int n;
int a[2010];
int s[2010];
int f[2010][2010];
int main()
{scanf("%d",&n);for(int i=n;i>=1;i--){scanf("%d",&a[i]);}for(int i=1;i<=n;i++){s[i]=s[i-1]+a[i];}for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){f[i][j]=f[i][j-1];if(2*j-1<=i){f[i][j]=max(f[i][j],s[i]-f[i-2*j+1][2*j-1]);}if(2*j<=i){f[i][j]=max(f[i][j],s[i]-f[i-2*j][2*j]);}}}printf("%d",f[n][1]);
}

  

转载于:https://www.cnblogs.com/Khada-Jhin/p/9197069.html

BZOJ2017[USACO 2009 Nov Silver 1.A Coin Game]——DP+博弈论相关推荐

  1. USACO翻译:USACO 2014 DEC Silver三题

    USACO 2014 DEC SILVER 一.题目概览 中文题目名称 回程 马拉松 奶牛慢跑 英文题目名称 piggyback marathon cowjog 可执行文件名 piggyback ma ...

  2. USACO翻译:USACO 2014 FEB SILVER 三题

    USACO 2014 FEB SILVER 一.题目概览 中文题目名称 自动打字 路障 神秘代码 英文题目名称 auto rblock scode 可执行文件名 auto rblock scode 输 ...

  3. USACO翻译:USACO 2012 FEB Silver三题

    USACO 2012 FEB SILVER 一.题目概览 中文题目名称 矩形草地 奶牛IDs 搬家 英文题目名称 planting cowids relocate 可执行文件名 planting co ...

  4. 【USACO 2020 January Silver】Loan Repayment 题解

    [USACO 2020 January Silver]Loan Repayment 题目: 题目描述 Farmer John 欠了 Bessie N 加仑牛奶(1≤N≤10^12).他必须在 K 天内 ...

  5. F. [usaco 2009 dec]游荡的奶牛 总结

    F. [usaco 2009 dec]游荡的奶牛 总结 题目 F. [usaco 2009 dec]游荡的奶牛 时间限制:1s 空间限制:256MB 输入文件:sgraze-in 输出文件:sgraz ...

  6. [USACO 2009 Dec S]Music Notes

    题目: [USACO 2009 Dec S]Music Notes ,哈哈,我们今天来看一道有二分思想的题嘛,这是选自USACO上的一道题,好了,我们一起来看看题意吧: 题目描述是复制的,可能有部分显 ...

  7. 【题解】284E. Coin Troubles(dp+图论建模)

    [题解]284E. Coin Troubles(dp+图论建模) 题意就是要你跑一个完全背包,但是要求背包的方案中有个数相对大小的限制 考虑一个\(c_i<c_j\)的限制,就是一个\(c_i\ ...

  8. 【BZOJ1572】【usaco 2009 open】工作安排job

    [问题描述] Farmer John 有太多的工作要做啊!!!!!!!!为了让农场高效运转,他必须靠他的工作赚钱,每项工作花一个单位时间. 他的工作日从0时刻开始,有1000000000个单位时间(! ...

  9. USACO 2019 December Silver】MooBuzz

    各位苦闷的父老乡亲们, 如果有问题,可以私信 如果需要测试自己的题,点这儿 阅读之前,不妨先点个赞呗. 正文 题目描述 Farmer John 的奶牛们最近成为了一个简单的数字游戏"Fizz ...

最新文章

  1. 在线作图|差异柱状图(组内)
  2. DESeq2包分析差异表达基因
  3. MAC安装MySQL
  4. python对文件的读操作有哪些方法-Python中文件的读取和写入操作
  5. QT的QTableWidget类的使用
  6. 笔记本关于虚拟机桥接小问题
  7. C++面试中string类的一种正确简明的写法
  8. Android高级之十二讲之如何降低应用内存消耗
  9. SQL:postgresql求多个点组成的多边形的geom数据
  10. mysql workbench uml_Ubuntu 16.04下UML建模PowerDesigner的替代ERMaster和MySQL Workbench
  11. ssh 方式git clone 代码仓库
  12. flex布局完整示例
  13. 南京信息工程大学计算机与科学专业,南京信息工程大学王牌专业有哪些及专业排名...
  14. FFplay文档解读-43-视频过滤器十八
  15. Spring data Mongo $map转写用例
  16. 【数据分析/商业分析】面试题整理——统计学/机器学习/业务专题
  17. np.arange()和 range()的用法及区别
  18. 关于暖茶的所有:微电影《暖茶》介绍篇,美文诗歌篇,小说简介篇
  19. linux 一次io大小,linux – AWS EBS中IO操作(IOP)的大小是多少?
  20. JAVA判断当前时间是上午am还是下午pm

热门文章

  1. GoCD notes
  2. Java Server Page
  3. android安装过哪些应用程序,如何安装应用程序两次而不干扰Android?
  4. 清除浮动php,CSS清除浮动
  5. php transfer-encoding: chunked,php – 使用chunked transfer encoding和gzip
  6. python+selenium获取cookie session_Python Selenium模拟登录成功后,使用此cookie、利用requests库进行get时,提示“非法登陆”。...
  7. mysql mysql_set_charset_SQL注入攻击之 mysql_set_charset [转]
  8. sequelize连接mysql_Sequelize没有连接mysql
  9. php curl跨域cookie_PHP curl模拟文件上传(接口请求实现跨域文件中转)
  10. CDH 和ambari之间的比较