P2964 [USACO09NOV]硬币的游戏A Coin Game (DP)
题意:n颗硬币 两个人从前往后按顺序拿
如果上一个人拿了i颗 那么下一个可以拿1-2*i颗
问先手能获得的最大收益
题解:比较典型的最大最小最大最小..DP了
但是暴力做的话是n^3 所以就体现出了这个题的巧妙之处
dp[i][j]表示拿到了第i颗上一个人拿了j颗
dp[i][j]由 dp[i + k][k] k = 1,2...2 * j转移来
dp[i][j - 1]由 dp[i + k][k] k = 1,2...2 * (j - 1)转移来
有许多状态是一样的 所以dp[i][j-1]可以转移到dp[i][j] 再枚举两个新的状态
显然要倒着dp
#include <bits/stdc++.h>
using namespace std; int sum[];
int dp[][]; int main()
{
int n;
scanf("%d", &n);
for(int i = ; i <= n; i++) scanf("%d", &sum[i]), sum[i] += sum[i - ]; for(int i = i; i <= n; i++) dp[n][i] = sum[n] - sum[n - ];
for(int i = n - ; i >= ; i--)
{
for(int j = ; j <= n; j++)
{
dp[i][j] = dp[i][j - ];
int k = (j - ) * + ;
if(i + k <= n) dp[i][j] = max(dp[i][j], sum[n] - sum[i - ] - dp[i + k][k]);
else dp[i][j] = max(dp[i][j], sum[n] - sum[i - ]); k++;
if(i + k <= n) dp[i][j] = max(dp[i][j], sum[n] - sum[i - ] - dp[i + k][k]);
else dp[i][j] = max(dp[i][j], sum[n] - sum[i - ]);
}
}
printf("%d\n", dp[][]);
return ;
}
P2964 [USACO09NOV]硬币的游戏A Coin Game (DP)的更多相关文章
- 洛谷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 ...
- LUOGU 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 ...
- [USACO09NOV]硬币的游戏A Coin Game
https://daniu.luogu.org/problemnew/show/P2964 dp[i][j] 表示桌面上还剩i枚硬币时,上一次取走了j个的最大得分 枚举这一次要拿k个,转移到dp[i- ...
- [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 ...
- [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 ...
- [USACO09NOV]硬币的游戏 博弈 dp
LINK : coin game 这道题 超级经典去年这个时候我就看过题目了 但时至今日还不会/cy 觉得在做比赛的题目的时候少写省选的题目 多做水题多做不难也不简单的题目就好了. 由于我是真的不会博 ...
- 【P2964】硬币的游戏(DP+前缀和)
一道DP,思维难度真是不小. 首先对于这个题的数据,我们可以发现差不多可以支持n^2logn,但是貌似也不会有这种复杂度的线性DP(至少这个题看上去不是这样).所以我们考虑N^2做法.因为求得是价值和 ...
- UVA.674 Coin Change (DP 完全背包)
UVA.674 Coin Change (DP) 题意分析 有5种硬币, 面值分别为1.5.10.25.50,现在给出金额,问可以用多少种方式组成该面值. 每种硬币的数量是无限的.典型完全背包. 状态 ...
- 【题解】284E. Coin Troubles(dp+图论建模)
[题解]284E. Coin Troubles(dp+图论建模) 题意就是要你跑一个完全背包,但是要求背包的方案中有个数相对大小的限制 考虑一个\(c_i<c_j\)的限制,就是一个\(c_i\ ...
随机推荐
- zabbix 监控mysql状态 -Windows
由于公司爬虫mysql数据库在Windows下面,监控一下: 主要命令:mysqladmin -uroot -proot -h127.0.0.1 ping 2>D:\zabbix\waring. ...
- 015--python集合和字符串
一.集合 关系测试 交集: 两个都有 .intersettion() 或用 & 符号 差集: 列表a有,列表b没有 .difference() 或用 - 符号 并集: 两列表合并 ...
- linux基于流的文件操作
1 打开流的函数 FIEL * fopen(const char * restrict pathname,const char* restrict type) FILE *fdopen(int fil ...
- CodeForces 712B Memory and Trident (水题,暴力)
题意:给定一个序列表示飞机要向哪个方向飞一个单位,让你改最少的方向,使得回到原点. 析:一个很简单的题,把最后的位置记录一下,然后要改的就是横坐标和纵坐标绝对值之和的一半. 代码如下: #pragma ...
- js、匿名函数、闭包、回调函数
234567891011121314151617181920212223242526272829303132333435 闭包 闭包:闭包是指有权访问另一个函数作用域中的变量的函数 函数嵌套一个函数, ...
- scrapy 连接错误
twisted.python.failure.failure twisted.internet.error.connectionlost: connection to the other side w ...
- Qt之对话框QDialog
这一节主要讲述对话框类,先讲述两种不同类型的对话框,再介绍Qt提供的几个标准对话框.对应本节的内容,可以在帮助索引中查看 QDialog 和 Dialog Windows 关键字. 一.模态和非模态对 ...
- 设置Linux环境变量的方法和区别_Ubuntu/CentOS
设置 Linux 环境变量可以通过 export 实现,也可以通过修改几个文件来实现,有必要弄清楚这两种方法以及这几个文件的区别. 通过文件设置 Linux 环境变量 首先是设置全局环境变量,对所有用 ...
- 洛谷 P3768 简单的数学题
https://www.luogu.org/problemnew/show/P3768 化简一下式子,就是$\sum_{d=1}^ncalc(d)d^2\varphi(d)$ 其中$calc(d)=\ ...
- Jamie and Interesting Graph CodeForces - 916C
http://codeforces.com/problemset/problem/916/C 好尬的题啊... #include<cstdio> #include<algorithm ...