hdu 3544 Alice's Game
#include<stdio.h>
int main()
{
int t,n;
__int64 sum1,sum2;
int i,j,a,b;
scanf("%d",&t);
for(i=;i<=t;i++)
{
scanf("%d",&n);
sum1=sum2=;
for(j=;j<n;j++)
{
scanf("%d%d",&a,&b);
while(a>&&b>)
{
a>>=;
b>>=;
}
if(a>)sum1+=a;
else sum2+=b;
}
//printf("%d %d ",sum1,sum2);
printf("Case %d: ",i);
if(sum1>sum2)printf("Alice\n");
else printf("Bob\n");
} return ;
}
这题是一个组合游戏,但是并不是一个对等的组合游戏,所以试图使用 SG 函数相关知
识解答是会面临巨大的挑战的。 书中本题的做法描述得十分简单,当然对于有这类组合游戏
知识的同学来说这题也确实十分简单,如果没有相关背景知识,也没有关系,我们来慢慢分
析这道题目。
要成功地解答本题需要认真地分析这个游戏的规则,我们首先来考虑一些简单情况。
(1) 只有 n*1 和 1*m 的巧克力的时候
(2) 2*2 的巧克力
(3) 2*3 和 3*2 的巧克力
(4) n*2 和 2*m 的巧克力
(5) n*3 和 3*m 的巧克力
(6) 很多巧克力在一起的情况
我们来一个一个分析这些情况,对于 n*1 和 1*m 的巧克力,显然 n*1 的巧克力对 alice
有利,而 1*m 的巧克力对 bob 有利。假设 n*1 对于 alice 有 n-1 的 HP 贡献,而 1*m 对于 bob
有 m-1 的 HP 贡献。至于谁胜利?自然是谁 HP 多谁就胜利,当然考虑到先 alice 先扣 HP,
所以如果 HP 一样多, alice 也输了。 为了方便,我们定义 alice 的 HP 为正, bob 的 HP 为负。
于是这个局面就可以通过简单的加法获得总的 HP 了。
那 2*2 的巧克力呢,认真分析就可以发现 2*2 在这个游戏中纯属幻觉! 谁也不愿意先拿
他开刀,切一道送了对方两次切的机会,而自己却只切了一刀。于是我们可以说,2*2 的巧
克力值 0 的 HP。
同样 2*3 和 3*2 的巧克力也因为同样的道理就这么被无情地抛弃了。
对于 n*2 的巧克力,根据直觉 alice 应该感到很高兴(当然不是 1*2), bob 自然不会傻
到来切这个巧克力,于是 alice 自己要想办法自己尽量多切几刀, 注意到切出 1*2 的巧克力
是很不利的事情,于是每次都切 2*2 的,可以切(n/2)-1 刀。 于是这就是 n*2 的巧克力的 HP
贡献了。2*m 以及 n*3,3*m 的就不再赘述,都是一样。
以此类推,4*4,8*8,16*16,都是比较关键的巧克力。
弄一个表吧,再找不到规律„„
好像,把这些 HP 值加起来,我们这题就做完了? Oh yeah.
!!!!来自官方解题报告
hdu 3544 Alice's Game的更多相关文章
- hdu 3544 Alice's Game 博弈论
博弈论+二分! 后一人会尽量选前一人切小的一块切!! 代码如下: #include<iostream> #include<stdio.h> #define I1(x) scan ...
- hdu 4122 Alice's mooncake shop(单调队列)
题目链接:hdu 4122 Alice's mooncake shop 题意: 有n个订单和可以在m小时内制作月饼 接下来是n个订单的信息:需要在mon月,d日,year年,h小时交付订单r个月饼 接 ...
- HDU 3544 (不平等博弈) Alice's Game
切巧克力的游戏,想得还是不是太明白. 后者会尽量选前着切后其中小的一块来切,那么先手须尽量取中间来切. So?题解都是这么一句话,不知道是真懂了还是从别人那抄过来的. 后来找到一个官方题解,分析得比较 ...
- HDU 4122 Alice's mooncake shop 单调队列优化dp
Alice's mooncake shop Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem ...
- HDU 4791 Alice's Print Service 思路,dp 难度:2
A - Alice's Print Service Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & ...
- hdu 4111 Alice and Bob 记忆化搜索 博弈论
Alice and Bob Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pi ...
- HDU 5054 Alice and Bob(数学)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5054 Problem Description Bob and Alice got separated ...
- HDU 4791 Alice's Print Service(2013长沙区域赛现场赛A题)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4791 解题报告:打印店提供打印纸张服务,需要收取费用,输入格式是s1 p1 s2 p2 s3 p3.. ...
- hdu 4268 Alice and Bob
Alice and Bob Time Limit : 10000/5000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other) Tota ...
随机推荐
- 近期H5项目开发小结
前言:2016差不多又过了半啦,最近参与了公司好几个h5项目(严格来说,也只能算是推广页面活动).主要是新品牌的推广需要,当然也有给公司以前老客户做的案例.今天主要总结下为新品牌开发的2个h5推广:就 ...
- php中echo、print、print_r、printf的返回值
1.echo 无返回值,是一个语言结构.在输出多个参数时不可以使用小括号; 2.print返回值为1:如:$x = 0; echo print $x."<br/>";/ ...
- ASP.NET中的TextBox下划线
看到园子里一位同行写的 http://www.cnblogs.com/xiaopeng84/archive/2007/04/10/707093.html 但是没有贴出效果图,自己练了一下,贴出代码和效 ...
- 用开源AOP简化MVVM框架
本文的前提是知晓基于Xaml开发,本文以WPF为例 一 .简化属性通知事件 普通的属性通知会写一个基于INotifyPropertyChanged接口的类 public class RasieProp ...
- Java eclipse export jar包 包括第三方引入的jar
1.安装fatjar插件 2.export jar 说明:安装后,操作说明以官网为准,不同的版本会有不同的右键菜单,我的版本(Eclipse Java EE IDE for Web Developer ...
- Antelope 和Barracuda区别
Antelope是innodb-base的文件格式, Barracude是innodb-plugin后引入的文件格式,同时Barracude也支持Antelope文件格式.两者区别在于: 文件格式 支 ...
- 外企iOS开发的笔试题
一组外企iOS开发的笔试题,您能回答出来吗?从群里收集来的. (miki西游@mikixiyou的文档,原文链接: http://mikixiyou.iteye.com/blog/1546376 转 ...
- 升级Mac osx 10.10 后安装php 的mcrypt extension
昨天折腾到凌晨四点多,今天又到这个点,终于成功了,心情比较复杂,先记录一下,改日再整理,此刻头昏脑胀,只想蒙头大睡. 发的问题,还没人回复,自己找到答案了,英语比较蹩脚,凑合看.. http://st ...
- 深入PHP EOF(heredoc)用法详解
介绍下使用EOF heredoc方式,输出长段内容的方法, <?php $name = '姓名'; print <<<EOT <html> <head> ...
- spring中Bean的注入类型
1.属性注入 即通过setXxx()方法注入Bean的属性值或依赖对象,由于属性注入方式具有可选择性和灵活性高的优点,因此属性注入是实际应用中最常采用的注入方式. 属性注入要求Bean提供 ...