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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/468596.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

写好一份属于自己的简历

原文出处&#xff1a;原文链接 下面是精益技术简历的47条原则&#xff1a; 版式 原则1&#xff1a;使用对齐 原则2&#xff1a;不必使用居中 原则3&#xff1a;谨慎使用粗体 原则4&#xff1a;避免不必要的折行 原则5&#xff1a;使用制表符辅助对齐 个人信息 原则6&#xff…

别忘了当初你为何出发

最近&#xff0c;特别喜欢听一个广播&#xff0c;宝安905&#xff0c;估计是因为我最近营养不太够&#xff0c;需要多喝一些鸡汤&#xff0c;刚好这个电台广播的鸡汤非常够味&#xff0c;非常符合我现在的胃口。比如这一句「你想收获世界上最好的东西&#xff0c;先让世界看到最…

Git学习历程

Git学习历程 作为一名有理想的程序员&#xff0c;当然要会用一些高效的工具。今天来复习一下之前学过的Git的使用方法。 学习流程&#xff1a; 1、入门GitHub的文章&#xff1a;http://pan.baidu.com/s/1jHLdNZg(百度云盘)。这篇文章中把GitHub讲的很详细&#xff0c;但是在讲解…

kass中lisp文件_自动加载文件目录下的lsp、vlx和fas文件

;自动加载文件夹中的lsp,fas,vlx文件(defun loadlspfile(Folder_path / nn f1)(if Folder_path(vl-catch-all-apply(lambda ( / nn f1)(setq nn(append(xingle_GetFile Folder_path "*.lsp")(xingle_GetFile Folder_path "*.fas")(xingle_GetFile Folder_p…

写给自己的话

花一定的时间, 在某感兴趣的几个框架, 或者技术上达到一定深度, 不要浅尝辄止, 多去研究, 扩展, 理解为什么要这样做, 我应该要怎么做, 我为什么要这样做某一方向不具有深度的根本原因在于: 1. 回避问题: 总是寻求别人做好的解决方案, 这样做未尝不可, 但是也应该搞懂为什么别人…

一位跟我一样疑惑的同学~

今天遇到一个同学给我提的问题&#xff0c;非常像我之前的经历&#xff0c;想分享给大家&#xff0c;最近手机码字&#xff0c;觉得有用&#xff0c;给个在看或者转发&#xff0c;小弟感激不尽&#xff0c;在所不辞。~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~我2012年毕业&#xff…

亚信第一天 5-15

webpack 入门教程 http://www.jianshu.com/p/4df92c335617 整体目录结构 lib - 使用nodejs laydate git .bat 安装脚本 打包 .sh page.json 整体配置 server.js 开发服务器配置 webpack-模块化划分及代码组织 使用npm自动化管理 npm的使用 - node的包管理工具 www.npmjs.com pa…

哦,瞧那,无能的悲观主义者---无能者的独唱

摘自网易云评论区 C语言中&#xff0c;反斜杠无法直接输出&#xff0c;需要在前面再加一个反斜杠标识出来才可以。如果&#xff0c;你是一个注定要被输出的反斜杠&#xff0c;那么我愿意成为那个在你之前的隐姓埋名的反斜杠。 “我所有的自负皆来自我的自卑&#xff0c;所有的…

长亭php反序列化防护_CTF-攻防世界-Web_php_unserialize(PHP反序列化)

题目解题过程PHP反序列化的一道题&#xff0c;从代码看出flage在fl4g.php这个文件里面&#xff0c;Demo类的构造方法可以传入文件名。把Demo的代码贴到本地做一下序列化classDemo {private $file index.php;public function __construct($file) {$this->file $file;}funct…

在深圳转户口这件小事

我对于政策这种事情是比较感冒的&#xff0c;比如老师说不能去外面上网&#xff0c;我是绝不会偷偷跑出去的&#xff0c;来深圳的第一年&#xff0c;我就想着办理户口了&#xff0c;第一次机会是在 TCL 的时候&#xff0c;人事部门有专门给我们办理转深户的&#xff0c;不过那时…

高程(三)笔记---- 第三章

一、有3个函数可以把非数值转换为数值&#xff1a;Number()、parseInt()、parseFloat() Number():可以用于任何数据类型&#xff0c;用法-----------Number(true) parseInt():把字符串转换为整型数值&#xff0c;用法---------parseInt("123") parseFloat():把字符串…

CPU 和 GPU

端午回来&#xff0c;发的第一篇文章&#xff0c;还在谋划其他事情&#xff0c;大家共勉。现在电脑这么普及&#xff0c;应该每个人都知道 CPU &#xff0c;即使不懂电脑的人都能憋出大招告诉你电脑里面有一个 CPU&#xff0c;CPU 是中央处理器&#xff0c;是很多很多年积累下来…

mysqlierror php_php操作mysqli(示例代码)

php操作mysqli(示例代码)更新时间&#xff1a;2013年10月28日 08:56:20 作者&#xff1a;php操作mysqli的示例代码。需要的朋友可以过来参考下&#xff0c;希望对大家有所帮助define("MYSQL_OPEN_LOGS",true);class mysqliHelp{private $db;public function __cons…

React Native - 3 View, Text简介以及onPress onLongPress事件

我们要生成如下的构图 直接上图&#xff0c;不解释。如下图所示&#xff0c;定义函数&#xff0c;函数之间不需要逗号&#xff0c;在元素上添加事件&#xff0c;使用关键字this.{function name}转载于:https://www.cnblogs.com/yahb/p/6864382.html

创业日记

最近在拼命的写代码&#xff0c;估计这段时间写代码的行数等于过去一年的了&#xff0c;这是保守估计&#xff0c;如果不保守估计就不好说了&#xff0c;我本来想在原来的小组群里发话说&#xff0c;打算是下面这段对话我&#xff1a;X总&#xff0c;你站起来X总&#xff1a;为…

线程基础知识_线程生命周期_从JVM内存结构看多线程下的共享资源

线程生命周期 线程状态 New: 线程创建(new Thread()) Runnable: 线程可运行(thread.start()), 注: 调用start并不一定是运行状态, 可能在等待CPU调度 Running: 线程进入运行状态 Blocked: 阻塞状态(object.wait, Thread.sleep) Terminal: 死亡状态(线程正常/非正常结束运行)th…

centos查看网络速率_CentOS 7查看网络带宽使用情况

最近装Openshift&#xff0c;需要下载大量的镜像&#xff0c;想看看他们的带宽使用情况。nload这确实是非常好用的工具&#xff0c;我也是刚刚知道。直接yum install就可以。使用也很简单&#xff0c;直接启动就可以&#xff0c;当然你也是可以加入参数&#xff0c;指定网卡。默…

CPU,内核,寄存器,缓存,RAM,ROM的知识

偷偷说一下&#xff0c;这个图片是晚上 8 点钟的太阳&#xff0c;一个骚男华为总工发给我的&#xff0c;有时间还是想出去走走很多人使用计算机&#xff0c;但是对计算机却不是很懂&#xff0c;即使是作为非常资深的码农&#xff0c;也不能做到心中有剑的地步&#xff0c;那么怎…

swift中为什么要创造出可选型?

&#xff08;1&#xff09;因为nil这个东西&#xff0c;swift中没有就是没有。 Int? 叫 整型可选型&#xff0c;如果不提前声明&#xff0c;直接赋值变量 nil会报错 。 可以将Int赋值给Int? &#xff0c;但是不能将Int?赋值给Int 。 &#xff08;2&#xff09;不能将 普通…

mft按钮设计_哈汽机组660MW超临界空冷机组ETS设计及逻辑说明

点击上方“火力发电集控运行”关注公众号&#xff0c;加微信号&#xff1a;jikonglingmi&#xff0c;备注&#xff1a;集控运行&#xff0c;拉你入集控运行技术交流群&#xff0c;共同学习、共同进步。更多学习题库&#xff0c;请进入首页菜单选择一、 基本设计思想1、既防拒动…