HDU 3389 Game

这是一道找规律的题目:

我们发现最后的棋子一定会到达1,3,4因为这3个地方是不可能拿到别的地方的:那么我们就只要对一步可以到1||3||4进行Nim计算就可以了,因为任何1个点2步之内就可到1||3||4

因此我们就只要考虑j % 6 == 0 || j % 6 == 2 || j % 6 == 5他们的情况:

View Code
#include<iostream>
 #include<cstdio>
 #include<cstdlib>
 #include<algorithm>
 #include<cmath>
 #include<queue>
 #include<set>
 #include<map>
 #include<cstring>
 #include<vector>
 #include<string>
 #define LL long long
 using namespace std;
 
 int main(  )
 {
     int n,m,T;
     while( scanf( "%d",&T )==1 )
     {
        for( int i = 1; i <= T; i ++ )
        {
            int ans = 0;
            scanf( "%d",&n );
            for( int j = 1; j <= n ; j ++ )
            {
                scanf( "%d",&m );
                if( j % 6 == 0 || j % 6 == 2 || j % 6 == 5 )
                   ans ^= m;         
            }        
            printf( "Case %d: ",i );
            if( ans == 0 ) printf( "Bob\n" );
            else printf( "Alice\n" );
        }    
     }
     //system( "pause" );
     return 0;
 }
 
posted @ 2012-09-26 18:42  wutaoKeen  阅读(305)  评论(0编辑  收藏  举报