叉姐代码
第i个数 第j轮
dp[i][j] = dp[i-1][j]+dp[i][j-1]
dp[i][j] = dp[i-2][j]+2*dp[i-1][j-1] +dp[i][j-2]
mod 2
所以dp[i][j] = dp[i-2^k][j] + dp[i][j-2^k]
补不动啊……改天开个dp专题多练练 QAQ
#include <cstdio>
const int N = 200000;
int a[N];
int main()
{
int T;
scanf("%d", &T);
while (T --) {
int n, m;
scanf("%d%d", &n, &m);
for (int i = 0; i < n; ++ i) {
scanf("%d", a + i);
}
for (int k = 0; 1 << k <= m; ++ k) {
if (m >> k & 1) {
for (int i = 1 << k; i < n; ++ i) {
a[i] ^= a[i - (1 << k)];
}
}
}
for (int i = 0; i < n; ++ i) {
printf("%d%c", a[i], " \n"[i == n - 1]);
}
}
}