博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU 1907
阅读量:5283 次
发布时间:2019-06-14

本文共 1231 字,大约阅读时间需要 4 分钟。

博弈入门题吧。

把尼姆博弈推广到n堆,都是用异或运算。还有个总结的地方是,只要先手面对的是奇异局势,则胜负都掌握在后手。本题,题目要求是最后拿完的输,尼姆博弈是最后拿完的赢。但实际上优先权都掌握在后手,前提是先手面对的是奇异局势。

本题还要注意一下每堆都是1的情况。

最后还是膜拜一下OI大神,推荐一个

1 #include
2 #include
3 #include
4 #include
5 #include
6 #include
7 #include
8 #include
9 #include
10 using namespace std;11 #define clc(a,b) memset(a,b,sizeof(a))12 #define inf 0x3f3f3f3f13 const int N=10010;14 #define LL long long15 const double eps = 1e-5;16 const double pi = acos(-1);17 // inline int r(){18 // int x=0,f=1;char ch=getchar();19 // while(ch>'9'||ch<'0'){if(ch=='-') f=-1;ch=getchar();}20 // while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}21 // return x*f;22 // }23 24 int main(){25 int T;26 scanf("%d",&T);27 while(T--){28 int n;29 scanf("%d",&n);30 bool flag=false;31 int ans=0;32 for(int i=1;i<=n;i++){33 int x;34 scanf("%d",&x);35 if(x>1) flag=true;36 ans^=x;37 }38 if(!flag){39 if(n&1){40 printf("Brother\n");41 }42 else 43 printf("John\n");44 }45 else{46 if(ans==0){47 printf("Brother\n");48 }49 else{50 printf("John\n");51 }52 }53 }54 return 0;55 }
View Code

 

转载于:https://www.cnblogs.com/ITUPC/p/5417344.html

你可能感兴趣的文章
数组分割问题求两个子数组的和差值的小
查看>>
《深入分析Java Web技术内幕》读书笔记之JVM内存管理
查看>>
161017、SQL必备知识点
查看>>
kill新号专题
查看>>
MVC学习系列——Model验证扩展
查看>>
Suite3.4.7和Keil u3自带fx2.h、fx2regs.h文件的异同
查看>>
打飞机游戏【来源于Crossin的编程教室 http://chuansong.me/account/crossincode 】
查看>>
[LeetCode] Merge Intervals
查看>>
Linux编程简介——gcc
查看>>
2019年春季学期第四周作业
查看>>
rotate the clock
查看>>
Python并发编程04/多线程
查看>>
CF461B Appleman and Tree
查看>>
CF1215E Marbles
查看>>
BZOJ2339 HNOI2011卡农(动态规划+组合数学)
查看>>
octave基本操作
查看>>
axure学习点
查看>>
WPF文本框只允许输入数字[转]
查看>>
dom4j 通用解析器,解析成List<Map<String,Object>>
查看>>
第一个项目--用bootstrap实现美工设计的首页
查看>>