hdu 1907 John,hdu 2509 Be the Winner anti-NIM
2014-02-14 18:29
387 查看
基础的NIM博弈,系统学习博弈的话推荐去看:http://blog.csdn.net/acm_cxlove/article/details/7854530 原帖里讲的很清晰。
这两题都是取到最后一个的为负,所以必胜态为S2,S1,T0,读取的时候求一下亦或并且统计一下富余堆的数量就可以了。
1907:
2509
这两题都是取到最后一个的为负,所以必胜态为S2,S1,T0,读取的时候求一下亦或并且统计一下富余堆的数量就可以了。
1907:
#include <iostream> #include <cstdio> #include <cmath> #include <algorithm> #include <cstring> using namespace std; typedef long long ll; int n,m; int ans; int main() { int tt; // freopen("in.txt","r",stdin); scanf("%d",&tt); while(tt--) { scanf("%d",&n); int rich=0; ans=0; for (int i=1; i<=n; i++) { scanf("%d",&m); ans^=m; if (m>1) rich++; } if (rich>=1) { if (ans==0) puts("Brother"); else puts("John"); } else { if (ans==0) puts("John"); else puts("Brother"); } } return 0; }
2509
#include <iostream> #include <cstdio> #include <cmath> #include <algorithm> #include <cstring> using namespace std; typedef long long ll; int n,m; int ans; int main() { // freopen("in.txt","r",stdin); while(~scanf("%d",&n)) { int rich=0; ans=0; for (int i=1; i<=n; i++) { scanf("%d",&m); ans^=m; if (m>1) rich++; } if (rich>=1) { if (ans==0) puts("No"); else puts("Yes"); } else { if (ans!=0) puts("No"); else puts("Yes"); } } return 0; }
相关文章推荐
- hdu 1907 John&& hdu 2509 Be the Winner(基础nim博弈)
- HDU 2509 Be the Winner && HDU 1907 John (Nim博弈变形)
- HDU(2509) Be the Winner /HDU(1907) John (Nim 博弈)
- HDU 1907 John (Nim博弈)
- (hdu 1907)John (Misère Nim,Nim博弈的变形)
- hdu 1907 John (anti—Nim)
- HDU 1907 John(anti-nim)
- hdu 1907 John Nim博弈 最后一个取石子者输
- hdu 1907 John(组合游戏 NIM变形)@
- HDU 1907 John(Nim博弈)
- hdu_1907:John(Nim变形)
- HDU 1907 John(Nim game)
- hdu 1907——John & hdu 2509——Be the Winner
- hdu 1907/2509 (Nim 游戏变种)
- hdu 1907 John (Nim变形)
- HDU_1907 John(Anti-Nim)
- HDU 1907 John nim博弈变形
- 博弈论 (Nim 博弈)—— HDU 1907 && HDU 2509
- hdu 1907 John(anti-nim)
- HDU 1907 John ( Nim Game )