hdu6199 gems gems gems dp+博弈
/**
2017 ACM/ICPC Asia Regional Shenyang Online 解题报告
题目:hdu6199 gems gems gems
链接:http://acm.hdu.edu.cn/showproblem.php?pid=6199
题意:Alice和Bob从左到右取数字,一开始Alice可以取1个或者2个。之后当前者可以取得数字个数为k或者k+1个。
k为上一个人选的数字个数。如果当前者选不到k个或者k+1个,那么游戏结束。
两个人都用最科学的方法取数字。问Alice的total value - Bob的total value最大。
思路:dp+博弈 由于k*(k+1)<=2e4;所以k不超过200;
定义dp[i][k]表示从i开始取数字,可以取k个或者k+1个可以获得的最大差值。 dp[i][k] = max(sum[i+k-1]-dp[i+k][k],sum[i+k]-dp[i+k+1][k+1])-sum[i-1]; 当前自己选的数的和-下一个人可以获得的最大差值=自己可以获得的最大差值。 比赛的时候搞错了题意。。。
时限1000ms
dfs做法超时。
改为递推200多ms。
*/
#include<bits/stdc++.h>
using namespace std;
#define ms(x,y) memset(x,y,sizeof x)
const int maxn = 2e4+;
const int inf = 0x3f3f3f3f;
int n;
int v[maxn], dp[maxn][];
int sum[maxn];
/*
int dfs(int i,int k)
{
if(i+k-1>n) return 0;
if(i+k-1==n) return sum[n]-sum[i-1];
if(vis[i][k]) return dp[i][k];
vis[i][k] = true;
int &res = dp[i][k];
res = max(sum[i+k-1]-sum[i-1]-dfs(i+k,k),sum[i+k]-sum[i-1]-dfs(i+k+1,k+1));
return res;
}*/
int main()
{
int T;
cin>>T;
while(T--)
{
scanf("%d",&n);
for(int i = ; i <= n; i++) scanf("%d",&v[i]);
for(int i = ; i <= n; i++) sum[i] = sum[i-]+v[i];
ms(dp,);
for(int i = n; i >= ; i--){
for(int k = ; k >= ; k--){
if(i+k->n) continue;
if(i+k-==n) dp[i][k] = sum[n]-sum[i-];///选k个。
else{
dp[i][k] = max(sum[i+k-]-dp[i+k][k],sum[i+k]-dp[i+k+][k+])-sum[i-];
}
}
}
printf("%d\n",dp[][]);
}
return ;
} /*
10
3
1 3 2
2
1 -1
3
1 1 1
4
2 2 3 3
2
1 2
*/
hdu6199 gems gems gems dp+博弈的更多相关文章
- codevs 1421 秋静叶&秋穣子(树上DP+博弈)
1421 秋静叶&秋穣子 题目描述 Description 在幻想乡,秋姐妹是掌管秋天的神明,作为红叶之神的姐姐静叶和作为丰收之神的妹妹穰子.如果把红叶和果实联系在一 起,自然会想到烤红薯 ...
- POJ 2068 NIm (dp博弈,每个人都有特定的取最大值)
题目大意: 有2n个人,从0开始编号,按编号奇偶分为两队,循环轮流取一堆有m个石子的石堆,偶数队先手,每个人至少取1个,至多取w[i]个,取走最后一个石子的队伍输.问偶数队是否能赢. 分析: 题目数据 ...
- hdu4778:状压dp+博弈
题目大意: 有g种不同颜色的小球,b个袋子,每个袋子里面有若干个每种小球 两人轮流取袋子,当袋子里面的同色小球有s个时,会合并成一个魔法球,并被此次取袋子的人获得 成功获得魔法球的人可以再次取 求二者 ...
- UVA 10404 Bachet's Game(dp + 博弈?)
Problem B: Bachet's Game Bachet's game is probably known to all but probably not by this name. Initi ...
- ACM-ICPC 2018 徐州赛区网络预赛 B(dp || 博弈(未完成)
传送门 题面: In a world where ordinary people cannot reach, a boy named "Koutarou" and a girl n ...
- UVA 10891 区间DP+博弈思想
很明显带有博弈的味道.让A-B最大,由于双方都采用最佳策略,在博弈中有一个要求时,让一方的值尽量大.而且由于是序列,所以很容易想到状态dp[i][j],表示序列从i到j.结合博弈中的思想,表示初始状态 ...
- 记忆化dp博弈
题:http://poj.org/problem?id=2068 题意: 有两个队伍A,B,每个队伍有N个人,交叉坐.即是A(1,3,5,7.....)B(2,4,6,8....).告诉你每个mi(1 ...
- POJ 2068 Nim#双人dp博弈
http://poj.org/problem?id=2068 #include<iostream> #include<cstdio> #include<cstring&g ...
- POJ 1678 I Love this Game!#dp博弈
http://poj.org/problem?id=1678 #include<iostream> #include<cstdio> #include<cstring&g ...
随机推荐
- 商业规则引擎IBM WebSphere ILog JRules概述,开发基础教程
Ilog Jrules开发基础教程有7篇,地址规则引擎Ilog Jrules开发基础教程[连载1]-- 概述篇 概述篇 规则引擎是一种嵌套在应用程序中的组件,它实现了将业务规则从应用程序代码中分离出来 ...
- C# NameValueCollection
一个简单的例子 NameValueCollection markStatus = new NameValueCollection(); string[] ...
- 解决idea中Activiti的bpmn编辑器的中文乱码问题
我使用的是idea2017+activiti6.0版本. 该文章主要是为了解决安装activiti插件后创建的流程模板中文乱码的问题. 1.安装Activiti流程编辑器插件. 1.1网上资料很多,这 ...
- JMeter学习笔记--使用HTTP信息头管理器
使用HTTP信息头管理,可以帮助测试人员设定JMeter发送的HTTP请求头所包含的信息.HTTP信息头中包含有”User-Agent".“Pragma".”Referer&quo ...
- Access数据库的连接字符串
<!-- Access2007 --> Provider=Microsoft.ACE.OLEDB.12.0;Data Source=data\myAccess_db.accdb;Persi ...
- linux下判断文件和目录是否存在
1.前言 工作中涉及到文件系统,有时候需要判断文件和目录是否存在.我结合APUE第四章文件和目录,总结一下如何正确判断文件和目录是否存在,方便以后查询. 2.stat系列函数 stat函数用来返回与文 ...
- Python atan2() 函数
描述 atan2() 返回给定的 X 及 Y 坐标值的反正切值. 语法 以下是 atan2() 方法的语法: import math math.atan2(y, x) 注意:atan2()是不能直接访 ...
- Spring Boot返回json数据及完美使用FastJson解析Json数据
Spring Boot返回json数据 视频地址:http://www.iqiyi.com/w_19rubxzsr5.html 博文参考:https://blog.csdn.net/linxingl ...
- DOA——MUSIC算法
一.均匀圆阵(UCA, Uniform Circular Array)的MUSIC算法 假设一个半径为R的M元均匀圆阵的所有阵元均位于坐标系X-Y平面内,第k-1个阵元坐标为,第i个窄带信号波长为,来 ...
- 关于使用REST API
设计REST API的请求处理部分 REST API功能 通常, 我们希望借助REST API完成以下操作 - 创建一个新记录 - 读取一个list的记录 - 读取指定的记录 - 更新指定记录 - 删 ...