Grid Game 3-angle 题解
题链:CF2045F - Grid Game 3-angle
*3000?可能没这么难,不过不妨碍他是一个神仙题,巴什博奕变种。
题目描述的已经很清楚了,就不复述一次了。
令
对同层考虑
定理:如果所有
a_i 不全为0 ,先手必胜,否则后手必胜。
我们尝试证明上述定理。
引理:如果所有
a_i 均为0 ,操作一次之后一定存在a_j 变得不为0 。
容易发现,对某个
后手必然可以操作一次使得所有
因为
综上,按照第一种定义,存在必胜和必败态转换,此题可以解决。
时间复杂度
#include<bits/stdc++.h>
using namespace std;
void solve()
{
int n, m, k;
cin >> n >> m >> k, k = k + 1;
map<int, int> mp;
for (int i = 1; i <= m; i ++ )
{
int r, c, a;
cin >> r >> c >> a, a %= k, r %= k;
if (mp.count(r)) mp[r] = mp[r] ^ a;
else mp[r] = a;
}
int ans = 0;
for (auto it : mp) ans |= it.second;
if (ans) cout << "Anda\n";
else cout << "Kamu\n";
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(nullptr);
int T = 1;
cin >> T;
while (T -- ) solve();
return 0;
}