这题可以完全转化为台阶博弈.就看你会不会转化了.//下面讲讲怎么转化,不会台阶博弈的,就…
我们可以把我们可以两个棋子之间中的空隙看成台阶的石子数,向左移看成石子往下传递石子.然后就是台阶博弈了?
下面讲讲台阶博弈怎么做?
这个怎么做呢..nim博弈就不解释了ε唉~做法就是奇数堆异或为0就胜.
代码如下:
#include <bits/stdc++.h>
using namespace std;
const int N=1005;
int a[N];
int main()
{
int T;
cin>>T;
while(T--)
{
int n;
cin>>n;
int ans=0;
for(int i=1;i<=n;i++)
{
cin>>a[i];
}
sort(a+1,a+1+n);
for(int i=n;i>0;i-=2)
{
ans^=(a[i]-a[i-1]-1);
}
if(ans) puts("Georgia will win");
else puts("Bob will win");
}
return 0;
}
为什么把a[n]-a[n-1]记为第一级台阶的石子,而不是a[i]-a[0]?