题解 P3480 [POI2009]KAM-Pebbles

题面
首先很明显博弈论吧。。。
然后单调递增数列的话,翻译一下就是差分数组非负
然后手玩一下就会发现是阶梯nim,只不过从i移到i+1而已
然后隔两个异或起来就是整个的SG了

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <bits/stdc++.h>
using namespace std;
int n, t, a[1010];
int main() {
scanf("%d", &t);
while(t--) {
scanf("%d", &n);
for(int i = 1; i <= n; i++) scanf("%d", a + i);
for(int i = n; i > 1; i--) a[i] -= a[i - 1];
int ans = 0;
for(int i = n; i > 0; i -= 2) ans ^= a[i];
if(ans) puts("TAK");
else puts("NIE");
}
return 0;
}