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相关推荐

  1. HDU 4389 - X mod f(x)

    题目地址: http://acm.hdu.edu.cn/showproblem.php?pid=4389 2012多校,第9场,1010 . 问题是,询问区间内 存在多少个 哈沙德数(Harshad ...

  2. HDU——1106排序(istringstream的使用、STLvector练习)

    排序 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submiss ...

  3. hdu 5438 Ponds 拓扑排序

    Ponds Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/contests/contest_showproblem ...

  4. HDU 1248 寒冰王座(全然背包:入门题)

    HDU 1248 寒冰王座(全然背包:入门题) http://acm.hdu.edu.cn/showproblem.php?pid=1248 题意: 不死族的巫妖王发工资拉,死亡骑士拿到一张N元的钞票 ...

  5. hdu 1312 Red and Black 解题报告

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1312 第二条深搜,题目并不难,但是做了我好久好久,由于一个细节,让我赌上了一个晚上的时间. 题目大意: ...

  6. HDU 1429 胜利大逃亡(续) (BFS+位压缩)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1429 胜利大逃亡(续) Time Limit: 4000/2000 MS (Java/Others)  ...

  7. hdu 1272 小希的迷宫

    Problem Description 上次Gardon的迷宫城堡小希玩了很久(见Problem B),现在她也想设计一个迷宫让Gardon来走.但是她设计迷宫的思路不一样,首先她认为所有的通道都应该 ...

  8. HDOJ 1157 HDU 1157 Who's in the Middle ACM 1157 IN HDU

    MiYu原创, 转帖请注明 : 转载自 ______________白白の屋   题目地址: http://acm.hdu.edu.cn/showproblem.php?pid=1157 题目描述: ...

  9. 大数加法【HDU 1002】

    大数加法模板 一般的加法只要int类型的两数直接相加即可,大一点的数可以设为long long类型,而超过长整型的数则属于大数问题了,大数加法其实也比较简单,利用数组实现就可以啦: 主要思想如下: ( ...

最新文章

  1. (0097)iOS开发之应用间的分享系列(2)
  2. Android学习——ListView的缓存机制
  3. 基于xtrabackup GDIT方式不锁库作主从同步(主主同步同理,反向及可)
  4. LG卖楼进行时:价值87.7亿元的双子座大厦将出手
  5. CentOS7下NextCloud搭建
  6. Django 一些少用却很实用的orm查询方法
  7. cenOS 安装opencv(for matlab)
  8. 如何将MDF文件转换为XLS文件?
  9. android图片文字识别器,图片转换文字识别器
  10. [转载]世界各个地区WIFI 2.4G及5G信道划分表(附无线通信频率分配表)
  11. Win7蓝屏代码 0x0000007B
  12. 字符串匹配——朴素算法Brute-Force(布鲁特-福斯算法)
  13. 网易版服务器我的世界装模组的文件包在哪里,网易我的世界怎么加mod【给网易我的世界里装mod】...
  14. hdu 4747(区间更新)
  15. js骚操作骂人不带脏
  16. 如何快速入门RTOS
  17. 土法炼钢:服务器定时汇报IP地址给我
  18. matlab最小二乘法拟合 做图像,用MatLab画图(最小二乘法做曲线拟合)
  19. Python——dat文件批量合并为同一个csv文件
  20. java jitter buffer_android webrtc jitter buffer大小设置

热门文章

  1. mongodb分片概念和原理-实战分片集群
  2. hadoop生态搭建(3节点)-10.spark配置
  3. Python大神告诉你,学习Python应该读哪些书!
  4. Google 正式开源 Jib ,帮助 Java 应用快速容器化
  5. 线程间的协作(3)——管道输入/输出流
  6. Rails开发细节《一》
  7. 在Linux中创建静态库.a和动态库.so
  8. uiimagepickerviewcontroller
  9. mysql event 简单demo
  10. XML和HTML的不同点