给定一个矩阵,两个人轮流玩游戏,每次每个人可以选择一行,然后从这一行里面的每一堆里都选择一些石子拿走,拿完赢...问先手是否必胜。
其实把行里面的所有石子合并也是可以的,转化为标准的Nim博弈问题。
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define ull unsigned long long
#define mod 1000007
#define inf 0x3f3f3f3f
#define N 100100
int main()
{
int t;
scanf("%d",&t);
for(int cas=1;cas<=t;cas++)
{
int n,m;
scanf("%d %d",&n,&m);
int ans=0,x;
for(int i=0;i<n;i++)
{
int sum=0;
for(int j=0;j<m;j++)
{
scanf("%d",&x);
sum+=x;
}
ans=ans^sum;
}
if(ans)
printf("Case %d: Alice\n",cas);
else
printf("Case %d: Bob\n",cas);
}
return 0;
}