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; }