Aiiage Camp Day4 A Board game
题意
N个D维空间点,每次可将一个点移动至字典序小于它且大于0的坐标处。Alice和Bob轮流移动,最先无法移动者输。
1<=n,d<=100
题解
每个维度相互独立。所以问题等价于D个尼姆博弈。
将每个维度坐标-1异或起来,Bob胜利当且仅当所有异或值为0。
1 #include <iostream> 2 using namespace std; 3 4 int a[110][110], num[110]; 5 6 int main() 7 { 8 int T; 9 scanf("%d", &T); 10 while (T--) 11 { 12 int n, d; 13 scanf("%d%d", &n, &d); 14 15 bool pd(0); 16 for (int i = 0; i < n; ++i) 17 for (int j = 0; j < d; ++j) 18 scanf("%d", &a[i][j]); 19 for (int i = 0; i < d; ++i) 20 { 21 int yh(0); 22 for (int j = 0; j < n; ++j) 23 yh ^= a[j][i] - 1; 24 if (yh != 0) 25 pd = 1; 26 } 27 if (pd) 28 puts("Alice"); 29 else 30 puts("Bob"); 31 } 32 33 return 0; 34 }