Link

\(\text{Solution:}\)

菜鸡自己想出来了状态设计,但是没有实现出来……菜死了

设\(dp[i][j]\)表示该选第\(i\)个,最多选\(j\)个的最优解。注意这里的定义仅仅是最优解,而不是先手最优。

那么,对于每一个\(dp[i][j]\)都要由下一步的\(dp[i+x][x+x]\)转移而来。注意的是,每一步的先后手不一样。所以轮到对方的时候要用剩下的石子数减去对方的最优解。因为对方选的最优,同时意味着我们在那部分也是最优的,一减就是了。

于是,我们可以枚举起点,枚举范围,再枚举选的个数,大力\(dp.\)然而超时无疑。

观察得到,\(dp[i][j]\)包括\(dp[i-1][j]\)(注意这里还是自己选),而这个\(dp[i-1][j]\)也就是比自己少枚举了一个\(dp[x+lim][lim+lim]\),至于这一句怎么理解:

对于暴力,我们枚举的是,一个初始值再从\(1\to lim\)来枚举选择的数量。这里可以看做,一个\(dp[i-1][lim]\)已经包含了枚举的\(1\to lim-1\),只差一个\(lim\)就行了。

这里看做一个从前向后推,用了那一句话代表了枚举的那些\(\text{dfs}\).于是省了这些循环。

那么我们省下来一重循环,时间可过。略微卡空间,省着点。

#include<bits/stdc++.h>
using namespace std;
int n,c[2001],sum[2001];
int dp[2000][2000];
int dfs(int x,int lim){
lim=min(lim,n-x+1);//边界
if(~dp[x][lim])return dp[x][lim];//已搜索过了
if(x+lim>n)return sum[x];//一次选完即可,这里是当前这一部分的最优解,不是全局
if(!lim)return 0;//没路可走滚回去)
int ans=dfs(x,lim-1);//dp[x][lim-1],这一步还是轮到我方走
ans=max(ans,sum[x]-dfs(x+lim,lim<<1));//这里之所以用全部减去这部分,是因为这一部分的dfs依旧在dp,它的结果是后面部分的最优解,减去就是当前这一部分所选择的
return dp[x][lim]=ans;//继续上面:上面那个东西算的是对方的最优,因为这里的状态定义并不是自己最优,而是当前执子方最优
//自己已经选择了要lim这部分,那剩下的既然对手最优了,对手选完的就是自己的了。
}
int main(){
scanf("%d",&n);
for(int i=1;i<=n;++i)scanf("%d",c+i);
for(int i=n;i>=1;--i)sum[i]=sum[i+1]+c[i];
memset(dp,-1,sizeof(dp));
printf("%d\n",dfs(1,2));
return 0;
}

【题解】[USACO09NOV]A Coin Game S的更多相关文章

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

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

  2. 题解 UVA10328 【Coin Toss】

    这道题目其实就是说有N张纸牌,问至少连续K张正面朝上的可能性是多少. 可以用递推做.首先我们将题目所求从 至少K张 转化为 总数 - 至多K张 (为什么要这样自己想) 设F[i][j]为前i个纸牌至多 ...

  3. [luogu2964][USACO09NOV][硬币的游戏A Coin Game] (博弈+动态规划)

    题目描述 Farmer John's cows like to play coin games so FJ has invented with a new two-player coin game c ...

  4. 题解报告:hdu 2069 Coin Change(暴力orDP)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2069 Problem Description Suppose there are 5 types of ...

  5. 题解 SP5271 XOINC - A Coin Game

    SP5271 XOINC - A Coin Game 双倍经验:P2964 [USACO09NOV]硬币的游戏A Coin Game O3做法(TLE):枚举i,j,k,即剩下i枚金币,上一轮选了j枚 ...

  6. 洛谷P2964 [USACO09NOV]硬币的游戏A Coin Game

    题目描述 Farmer John's cows like to play coin games so FJ has invented with a new two-player coin game c ...

  7. [USACO09NOV]硬币的游戏A Coin Game

    https://daniu.luogu.org/problemnew/show/P2964 dp[i][j] 表示桌面上还剩i枚硬币时,上一次取走了j个的最大得分 枚举这一次要拿k个,转移到dp[i- ...

  8. P2964 [USACO09NOV]硬币的游戏A Coin Game (DP)

    题意:n颗硬币 两个人从前往后按顺序拿 如果上一个人拿了i颗 那么下一个可以拿1-2*i颗 问先手能获得的最大收益 题解:比较典型的最大最小最大最小..DP了 但是暴力做的话是n^3 所以就体现出了这 ...

  9. [LUOGU2964] [USACO09NOV]硬币的游戏A Coin Game

    题目描述 Farmer John's cows like to play coin games so FJ has invented with a new two-player coin game c ...

随机推荐

  1. AndroidStudio中利用git下载github或者git.oschina的代码时报错:repository test has failed解决方法

    作者:程序员小冰,CSDN博客:http://blog.csdn.net/qq_21376985 QQ986945193 微博:http://weibo.com/mcxiaobing AndroidS ...

  2. EditText设置输入的类型,只能输入纯数字,只能输入手机号码,只能输入邮箱等等。

    作者:程序员小冰,CSDN博客:http://blog.csdn.net/qq_21376985转载请说明出处. 下面以数字.电话为例讲述EditText怎么设置输入类型,其他类型可以参考InputT ...

  3. 在GitLab pages上快速搭建Jekyll博客

    前一段时间将我的Jekyll静态博客从github pages镜像部署到了 zeit.co(现vercel)上了一份,最近偶然发现gitlab pages也不错,百度也会正常抓取,于是动手倒腾,将gi ...

  4. Tomcat三实例cluster多播方案共享session再配置

    昨天已经将两实例cluster多播方案共享Session配置成功,其中的关键就在于server.xml中,engine->channel->receiver节点中address得写成自己的 ...

  5. 关于Vue-loader的那些事儿

    什么是Vue-loader 一个webpack的加载器,负责将vue组件编译成普通的JavaScript模块. 关于webpack的介绍 这里呢?用到webpack,在项目的编译打包的过程中,将复杂的 ...

  6. Java中String.strip()和String.trim()方法

    strip和trim String.trim() 可以去除字符串前后的"半角"空白字符 String.strip() 可以去除字符串前后的"全角和半角"空白字符 ...

  7. Redis源码笔记--服务器日志和函数可变参数处理server.c

    前言 Redis源码中定义了几个和日志相关的函数,用于将不同级别的信息打印到不同的位置(日志文件或标准输出,取决于配置文件的设置),这些函数的定义位于 server.h 和server.c 文件中,包 ...

  8. 老生常谈SpringAop日志收集与处理做的工具包

    AopLog是基于Spring Aop 和ThreadLocal实现的一个专门对请求方法内容日志的拦截与处理的日志工具包. 场景 : 我想知道一些重要的请求方法的请求参数,响应参数,请求头,以及耗时, ...

  9. git线上操作

    选择线上仓库 """ 1.注册码云账号并登录:https://gitee.com/ 2.创建仓库(课堂截图) 3.本地与服务器仓库建立连接 ""&qu ...

  10. 每天一个dos命令-net.

    Rem:关于net命令相关的常用实例(如果cmd中执行net相关命令,报错:Access is denied. 可以右键cmd,以管理员身份运行即可!) 1.创建一个新账号:net user ifsf ...