1740
来源:互联网 发布:linux在终端中打开rpm 编辑:程序博客网 时间:2024/04/30 14:55
1740算是“男人八题”里面代码最简单的了,当然,它背后的内涵很丰富。。。。
题意就是:n堆石子,1 <= n <= 10,每堆石子的数量m不超过100。Alice和Bob轮流取石子,Alice总是先玩。“取一次”定义为:在任一堆里取走至少一个石子(可以全取),然后这堆剩下的石子任意分给其他还有石子的各堆(可以不分)。两人都取最优策略,最后把剩下的石子全取走的赢。
结论:如果n为偶数,在这n个数字里找一对相等的数字,找出的数字不放回,最后如果可以取走所有数字,先取者输;否则先取者赢。
证明:如果n=1,先取者赢;
如果n=2,并且m1=m2=1,先取者面对(1,1)必输;
如果m1=m2=/=1,则先取者可以在某堆里全取(那对方就可以把剩下一堆一次走,输),也可以不全取;如果不全取,后取者在另一堆取相同数量使m1‘=m2’,最后总能使先取者面对(1,1),先取者必输;
如果如果m1=/=m2,先取者在数量较大的一堆取走若干个使m1‘=m2’,则后取者面对(k,k)必输,先取者赢;
如果n=3,先取者面对(m1,m2,m3),他可以把最大堆消灭,并把最小堆变得和第二大堆一样大,则后取者面对(k,k)必输,先取者赢;
如果n是一个偶数,
1.如果先取者面对(m1,m1‘,m2,m2’,....,mk,mk‘),m1=m1‘,m2=m2’,....,mk=mk‘,后取者总能让先取者面对(m1‘‘,m1‘‘‘,m2‘‘,m2’‘‘,....,mk‘‘,mk‘‘‘),最后先取者面对(1,1,1,1,....,1,1),先取者必输;
2.否则先取者可以取最大的一堆,把变得它和最小堆一样大,石子分到其他堆,使其他堆可以配对,剩下的石子取走。比如先取者面对(12,34,36,56,66,71,84,93),然后最大堆是93,取走并分走81个就和最小堆12相等,这81个里面,2个分给第二堆,10个分给第四堆,13个分给第六堆,剩下56个取走,于是后取者面对(12,12,36,36,66,66,84,84),先取者赢;
如果n是一个奇数,用上面类似的方法可以让先取者赢。
- 1740
- POJ 1740
- ACdream 1740
- poj 1740
- POJ 1740 (博弈)
- 【博弈贪心】poj 1740
- poj 1740 博弈
- ural 1740 Deer is Better!
- URAL - 1740 - Deer is Better!
- Deer is Better! ural 1740
- 1740 A New Stone Game
- poj 1740 一个博弈游戏
- 南邮 OJ 1740 约数之和
- poj 1740 A New Stone Game( 博弈)
- FZU 1740 所罗门王最后的密码
- POJ 1740 A New Stone Game
- POJ 1740 A New Stone Game
- poj 1740 A New Stone Game(博弈)
- csdn,我来了
- poj 3159 Candies
- gdb 调试-1
- poj 1273 Drainage Ditches
- 用CMake写一个简单的交叉编译测试工程
- 1740
- poj 1274 The Perfect Stall
- 1003:max sum
- 集合 - 1
- CSDN
- poj 2983 Is the Information Reliable?
- php session有效期问题
- 如何制作电子地图
- 云计算介绍(来自百度百科)