有 n 颗棋子,给出 n 颗棋子位于数轴上的坐标,G 先走,判断谁赢
Nim 博弈的变形,如果 n 为偶数,那么每两个棋子之间网格可以看作一堆硬币,如果 n 为奇数,则将第一个棋子与之前的网格看作第一堆硬币
const int N=1e4+5;
int i,j,k;
int n,m,t;
int a[N];
int p[N];
int main()
{
//IOS;
rush(){
sd(n);
for(int i=1;i<=n;i++) sd(a[i]);
sort(a+1,a+1+n);
int num=1;
if(n&1) p[num]=a[num]-1,num++;
for(int i=num;i+1<=n;i+=2){
p[num]=a[i+1]-a[i]-1;
num++;
}
int ans=p[1];
for(int i=2;i<num;i++){
ans^=p[i];
}
if(ans==0) printf("Bob ");
else printf("Georgia ");
puts("will win");
}
PAUSE;
return 0;
}