HDUOJ-----Be the Winner
此题用到的概念: 【定义1】:若一堆中仅有一个石子,则被称为孤单堆。若大于1个,则称为充裕堆。 【定义2】:T态中,若充裕堆的堆数大于等于2,则称为完全利他态,用T2表示;若充裕堆的堆数等于0,则称为部分利他态。用T0表示。 孤单堆的根数异或智慧影响二进制的最后以为,但充裕堆会影响高位(非最后一位)。一个充裕堆,高位必有一位不为0,则所有根数异或不为0。故不会是T态。 【定理1】:S0态,即仅有奇数个孤单堆,必败。T0态必胜。 证明:S0态,其实就是每次只能取一根。每次第奇数根都由自己取,第偶数根都由对方取,所以最后一根必由自己取。所以必败。同理:T0态必胜。 【定理2】:S1态,只要方法正确,必胜。 证明:若此时孤单堆堆数为奇数,把充裕堆取完;否则,取成一根。这样,就变成奇数个孤单堆,由对方取。由定理1,对方必输,己必胜。 【定理3】:S2态不可转一次变为T0态。 证明:充裕堆数不可能一次由2变为0。 【定理4】:S2态可一次转变为T2态。 证明:因为对于任何一个S态,总能从一堆中取出若干个使之成为T态。又因为S1态,只要方法正确,必胜。S2态不可转一次变为T0态,所以转变的T态为T2态。 【定理5】:T2态,只能转变为S2态或S1态。 证明:因为T态,取任何一堆的若干根都将成为S态。由于充裕堆不可能一次由2变为0,所以此时的S态不可能为S0态。得证。 【定理6】:S2态,只要方法正确,必胜。 证明:方法如下: S2态,就把它变为T2态。(定理4); 对方只能T2转变为S2态或S1态(定理5)。 若转变为S2,则转向①。 若转变为S1,这时己必胜(定理1)。 【定理7】:T2态必输。 证明:同定理6. 综上所述:必输态有:T2、S0;必胜态有:S2、S1、T0。
Be the Winner
Time Limit : 2000/1000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other)
Total Submission(s) : 2 Accepted Submission(s) : 2
这题与以往的博弈题的胜负条件不同,谁先走完最后一步谁输,但他也是一类Nim游戏,即为anti-nim游戏。 首先给出结论:先手胜当且仅当 ①所有堆石子数都为1且游戏的SG值为0(即有偶数个孤单堆-每堆只有1个石子数);②存在某堆石子数大于1且游戏的SG值不为0. 证明: 若所有堆都为1且SG值为0,则共有偶数堆石子,故先手胜。 i)只有一堆石子数大于1时,我们总可以对该石子操作,使操作后堆数为奇数且所有堆的石子数均为1; ii)有超过一堆的石子数1时,先手将SG值变为0即可,且总还存在某堆石子数大于1 因为先手胜。
代码:尼姆博弈变形(anti-nimu)
#include<iostream>
using namespace std;
int main()
{
int n,m,i,x;
bool flag;
while(scanf("%d",&n)!=EOF)
{
flag=false;
for(x=i=;i<n;i++)
{
scanf("%d",&m);
x^=m;
if(m>) flag=true; //孤单堆
}
if(!flag) printf(n&==?"No\n":"Yes\n");
else printf(x==?"No\n":"Yes\n");
}
return ;
}
HDUOJ-----Be the Winner的更多相关文章
- HDU 5754 Life Winner Bo 组合博弈
		Life Winner Bo Problem Description Bo is a "Life Winner".He likes playing chessboard gam ... 
- HDU 2509 Be the Winner nim博弈变形
		Be the Winner Problem Description Let's consider m apples divided into n groups. Each group contai ... 
- hduoj 1455 && uva 243 E - Sticks
		http://acm.hdu.edu.cn/showproblem.php?pid=1455 http://uva.onlinejudge.org/index.php?option=com_onlin ... 
- HDU5754 Life Winner Bo(博弈)
		题目 Source http://acm.hdu.edu.cn/showproblem.php?pid=5754 Description Bo is a "Life Winner" ... 
- Codeforces Beta Round #2 A. Winner
		A. Winner time limit per test 1 second memory limit per test 64 megabytes input standard input outpu ... 
- HDU2509 Be the Winner
		Be the Winner Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Tot ... 
- Recruit Coupon Purchase Winner's Interview: 2nd place, Halla Yang
		Recruit Coupon Purchase Winner's Interview: 2nd place, Halla Yang Recruit Ponpare is Japan's leading ... 
- winner tree 胜者树
		在树形选择排序中,利用锦标赛思想建立的树称为胜者树. 1.每个非终端节点存储的是左右孩子节点中的优胜者. 2.通过减少比较次数,提高效率. 3.胜者树就是一颗特殊的线段树. 一.构建树 Procedu ... 
- hduoj 4712 Hamming Distance 2013 ACM/ICPC Asia Regional Online —— Warmup
		http://acm.hdu.edu.cn/showproblem.php?pid=4712 Hamming Distance Time Limit: 6000/3000 MS (Java/Other ... 
- hduoj 4706 Herding 2013 ACM/ICPC Asia Regional Online —— Warmup
		hduoj 4706 Children's Day 2013 ACM/ICPC Asia Regional Online —— Warmup Herding Time Limit: 2000/1000 ... 
随机推荐
- 《SEO深度解析——全面挖掘搜索引擎优化的核心秘密》
			<SEO深度解析——全面挖掘搜索引擎优化的核心秘密> 基本信息 作者: 痞子瑞 出版社:电子工业出版社 ISBN:9787121224041 上架时间:2014-2-28 出版日期:201 ... 
- ubuntu 12.04 安装无线网卡驱动
			安装ubuntu 12.04后,无线网卡不可用,采用以下方式解决: 1.在终端中运行如下命令,重新安装b43相关的全部驱动和firmware: sudo apt-get install bcmwl-k ... 
- java 中的resultset的类型
			结果集(ResultSet)是数据中查询结果返回的一种对象,可以说结果集是一个存储查询结果的对象,但是结果集并不仅仅具有存储的功能,他同时还具有操纵数据的功能,可能完成对数据的更新等. 结果集读取数据 ... 
- js中replace的用法
			replace方法的语法是:stringObj.replace(rgExp, replaceText) 其中stringObj是字符串(string),reExp可以是正则表达式对象(RegExp)也 ... 
- c++ placement new概念
			参考:http://www.cnblogs.com/Clingingboy/archive/2013/04/26/3044910.html 转:http://bbs.chinaunix.net/thr ... 
- Jenkins——应用篇——插件使用——Publish over SSH
			本文是jenkins应用系统文章的一部分,大部分来自工作和学习中的实践,部分内容来自官方文档和网友的文章,引用的文章会在"參考资料"部分附上原始链接,如无意中侵犯您的权利.请联系Q ... 
- [Node.js]23. Level 4: Semantic versioning
			Update the versions on your dependencies to be a little more flexible, adding the ~ in front of your ... 
- 【Python】得到当前日期时间
			import time str=time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time())) print(str) 
- Oracle综合数据库管理命令集
			sqlplus SANKYU/SANKYU@ORADB_192.168.25.235 cmd: exp .......(最后不要加;号)--sankyuexp SANKYU/SANKYU@SUNNY ... 
- Grails开发环境的高速搭建
			Grails开发环境的高速搭建 1 JAVA环境变量的设置和Grails设置环境变量 个人參考 JAVA_HOME =E:\kaifa\Java\jdk7_32 GRAILS_HOME =E:\kai ... 
