HDU 4701 Game
link:http://acm.hdu.edu.cn/showproblem.php?pid=4701
DP真美 ! (亝 ‿ 亝)
dp[pos][a][b][0/1]:第pos件商品即将被购买,Alice有a元, Bob有b元,轮到谁行动(0:Alice 1:Bob)。
打训练赛时,设计出来了这样一个状态。然后发现了pos和a能表示出b呀!于是,省掉了一维,然后就不会
了。之后尝试着贪心,效果不佳。
先来个小小的降维~
dp[pos][x]:第pos件商品即将被购买,面临着这个局面的人有x元。能否获胜呢?
看来,求索未得啊!空间复杂度还是爆炸。然而dp[pos][x]仅仅表达0/1的话是不是有点浪费呢?这样来试试
dp[pos]:第pos件商品即将被购买,面临此局面的人至少需要多少元才可获胜?
nice!这个状态设计的挺令人满意的!
然后就可施展我们的博弈思想。若想胜,则需一个GG的后继.
即将行动的人的钱:dp[pos]
对手的钱:a+b - dp[pos] - sum[pos-1]
为了找到这么一个后继,则存在nxt>pos满足这样两个条件:
dp[pos] >= a + b - sum[pos-1] - dp[nxt] + 1
dp[pos] >= sum[nxt-1] - sum[pos-1]
令a + b - sum[pos-1] - dp[nxt] + 1 = Ans1, sum[nxt-1] - sum[pos-1] = Ans2
dp[pos] = min{ max(Ans1, Ans2) }
然后从后往前,一遍计算dp[i],一遍维护max(Ans1, Ans2)最小值。O(n)
#include <iostream>
using namespace std;
typedef long long LL;
const int NICO = 1000002;
LL n, a, b, x;
LL sum[NICO];
int main()
{while(~scanf("%lld %lld %lld", &n, &a, &b)){for(int i=1;i<=n;i++){scanf("%lld", &x);sum[i] = sum[i-1] + x;} LL pre = sum[n], now = 0;for(int i=n;i>=1;i--){now = pre - sum[i-1];//cout << i << " : " << now << endl;pre = min(pre, max(sum[i-1], a+b-now+1));}printf("%s\n", now>a?"BOB":"ALICE");}
}
转载于:https://www.cnblogs.com/RUSH-D-CAT/p/6854704.html
HDU 4701 Game相关推荐
- HDU 4389 - X mod f(x)
题目地址: http://acm.hdu.edu.cn/showproblem.php?pid=4389 2012多校,第9场,1010 . 问题是,询问区间内 存在多少个 哈沙德数(Harshad ...
- HDU——1106排序(istringstream的使用、STLvector练习)
排序 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submiss ...
- hdu 5438 Ponds 拓扑排序
Ponds Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/contests/contest_showproblem ...
- HDU 1248 寒冰王座(全然背包:入门题)
HDU 1248 寒冰王座(全然背包:入门题) http://acm.hdu.edu.cn/showproblem.php?pid=1248 题意: 不死族的巫妖王发工资拉,死亡骑士拿到一张N元的钞票 ...
- hdu 1312 Red and Black 解题报告
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1312 第二条深搜,题目并不难,但是做了我好久好久,由于一个细节,让我赌上了一个晚上的时间. 题目大意: ...
- HDU 1429 胜利大逃亡(续) (BFS+位压缩)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1429 胜利大逃亡(续) Time Limit: 4000/2000 MS (Java/Others) ...
- hdu 1272 小希的迷宫
Problem Description 上次Gardon的迷宫城堡小希玩了很久(见Problem B),现在她也想设计一个迷宫让Gardon来走.但是她设计迷宫的思路不一样,首先她认为所有的通道都应该 ...
- HDOJ 1157 HDU 1157 Who's in the Middle ACM 1157 IN HDU
MiYu原创, 转帖请注明 : 转载自 ______________白白の屋 题目地址: http://acm.hdu.edu.cn/showproblem.php?pid=1157 题目描述: ...
- 大数加法【HDU 1002】
大数加法模板 一般的加法只要int类型的两数直接相加即可,大一点的数可以设为long long类型,而超过长整型的数则属于大数问题了,大数加法其实也比较简单,利用数组实现就可以啦: 主要思想如下: ( ...
最新文章
- (0097)iOS开发之应用间的分享系列(2)
- Android学习——ListView的缓存机制
- 基于xtrabackup GDIT方式不锁库作主从同步(主主同步同理,反向及可)
- LG卖楼进行时:价值87.7亿元的双子座大厦将出手
- CentOS7下NextCloud搭建
- Django 一些少用却很实用的orm查询方法
- cenOS 安装opencv(for matlab)
- 如何将MDF文件转换为XLS文件?
- android图片文字识别器,图片转换文字识别器
- [转载]世界各个地区WIFI 2.4G及5G信道划分表(附无线通信频率分配表)
- Win7蓝屏代码 0x0000007B
- 字符串匹配——朴素算法Brute-Force(布鲁特-福斯算法)
- 网易版服务器我的世界装模组的文件包在哪里,网易我的世界怎么加mod【给网易我的世界里装mod】...
- hdu 4747(区间更新)
- js骚操作骂人不带脏
- 如何快速入门RTOS
- 土法炼钢:服务器定时汇报IP地址给我
- matlab最小二乘法拟合 做图像,用MatLab画图(最小二乘法做曲线拟合)
- Python——dat文件批量合并为同一个csv文件
- java jitter buffer_android webrtc jitter buffer大小设置