hdu1907John(NIM博弈变形)
来源:互联网 发布:linux传送文件命令 编辑:程序博客网 时间:2024/05/21 13:59
正常NIM博弈,取走最后一个石子为赢,后手必胜的条件:a1^a2^...^an==0。不满足这个条件,则先手必胜。
这道题是,取走最后一个算输。
所以当面对石子取完的局面,必胜态。只剩下一个石子时,是必败态。由此开始推。
1.只有一堆大于1的石子时,先手只要取得只剩一个石子就必胜了。
2.当有两堆大于 1的石子时,如果石子数目相等则必败,因为无论你出什么,对手也可以跟着你出,只要最后一步让石子剩下一颗就行了。如果石子数目不同,你只要取一个适当的数,让石子相等,就赢了。
3.可以推出当有N堆大于1的石子时,如果所有石子的结果异或后,不等于0,就是必胜态,你总是可以取到一个适当的数,让下一个局面,必败,即让异或的结果等于0;
4.当有N堆等于1的石子时,如果所以石子异或的结果为0,则为必胜态。或者是偶数个的时候,先手必胜。
代码如下:
#include<iostream>using namespace std;int main(){int T;int n;int a[50];cin >> T;while (T--){cin >> n;int x = 0;int flag = 0;for (int i = 0; i < n; i++){cin >> a[i];if (a[i] > 1)flag++;x ^= a[i];} if(n==1&&flag||flag==0&&x==0||flag!=0&&x)puts("John"); //条件1.3.4else puts("Brother");}return 0;}
阅读全文
0 0
- hdu1907John(NIM博弈变形)
- Nim博弈变形(anti-nim)
- Nim(Nim博弈变形)
- poj1704(变形Nim博弈)
- hdu 5011 nim博弈变形
- HDU_1907&2509 博弈(Nim博弈变形)
- hdu1907John 简单博弈
- hdu1907John尼姆博弈
- Northcott Game(hdu1730变形的nim博弈)
- hdu 1730 Northcott Game (nim博弈变形)
- HDU 1907 John nim博弈变形
- POJ 3480 John Anti-Nim博弈变形
- poj 2960 S-Nim Nim博弈变形 有限取法
- HDU1907John(尼姆博弈-先取光者输)
- POJ 2975 Nim(尼姆博弈的变形)
- HDU 1848 Fibonacci again and again Nim博弈变形
- poj3480 John (nim博弈变形--SJ定理)
- POJ 1704 Georgia and Bob (博弈 Nim游戏变形)
- 电脑文件夹一闪一闪
- postgresql数据备份恢复
- 混淆策略
- Trafodion CQD-allow_nullable_unique_key_constraint
- mybatis
- hdu1907John(NIM博弈变形)
- javaScript_BOM_增加删除节点
- cvFindContours
- MySql数据库sql优化
- 在vue项目中正确的引入jquery
- CF422 div2 B. Crossword solving
- sql for xml path用法
- cocos2dx-lua笔记
- Ubuntu 文件夹右小角有锁的问题解决