POJ 1704 Georgia and Bob 博弈
http://poj.org/problem?id=1704
看完这个题,一点思路都没有。看的这个blog感觉挺好 http://www.cnblogs.com/AndreMouche/archive/2011/03/27/1996762.html
把每两个分成一组,每组两个数间的距离看成石子数量,改变这两个石子的距离才会影响局势
代码:
#include<iostream> #include<cstdio> #include<cstring> #include<cmath> #include<algorithm> #define nMAX 1002 using namespace std; int a[nMAX],dis[nMAX]; int n; int main() { int CASE; scanf("%d",&CASE); int i,ans; while(CASE--) { memset(dis,0,sizeof(dis)); memset(a,0,sizeof(a)); scanf("%d",&n); ans=0; for(i=1;i<=n;i++) scanf("%d",&a[i]); sort(a+1,a+n+1); if(n%2==0) for(i=2;i<=n;i+=2) dis[i/2]=a[i]-a[i-1]-1; else for(i=1;i<=n;i+=2) dis[(i+1)/2]=a[i]-a[i-1]-1; ans=0; for(i=1;i<=(n+1)/2;i++) ans^=dis[i]; if(ans==0) printf("Bob will win\n"); else printf("Georgia will win\n"); } return 0; }