转化为nim博弈。如果是偶数两两组合。如果一个人把前面的棋子往左移动,另一个人把后面的棋子也往左移动。是一样的。
如果是奇数 就加一个为0 的堆,两两组合
#include<iostream>
#include <stdio.h>
#include <algorithm>
#include<memory.h>
#define MAX 1009
using namespace std;
int a[MAX];
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
int n;
scanf("%d",&n);
for(int i=0;i<n;i++)
scanf("%d",&a[i]);
if(n%2==1)a[n++]=0;
sort(a,a+n);
int x=0;
for(int i=0;i<n;i+=2)
{
x^=(a[i+1]-a[i]-1);
}
if(x==0)printf("Bob will win\n");
else printf("Georgia will win\n");
}
return 0;
}