bzoj 1115 转换+阶梯博弈
思路:我打了半天的表找规律。。。。 我们将每两个数的差值看成一堆堆石子,那么题目实际上就变为了
从当前堆可以拿出一些石子放到下一堆里去,就变成了一个阶梯博弈。。。
#include<bits/stdc++.h> #define LL long long #define fi first #define se second #define mk make_pair #define pii pair<int,int> #define piii pair<int, pair<int,int> > using namespace std; const int N = 1000 + 10; const int M = 10 + 7; const int inf = 0x3f3f3f3f; const LL INF = 0x3f3f3f3f3f3f3f3f; const int mod = 1e9 + 7; const double eps = 1e-6; int n, a[N], b[N]; int main() { int T; scanf("%d", &T); while (T--) { scanf("%d", &n); int ans = 0; for (int i = 1; i <= n; ++i) { scanf("%d", &a[i]); } for (int i = n; i >= 1; --i) { b[n - i + 1] = a[i] - a[i - 1]; } for (int i = 1; i <= n; ++i) { if (i % 2) ans ^= b[i]; } if (!ans) { puts("NIE"); } else { puts("TAK"); } } return 0; } /* */