CF1270I Xor on Figures
CF1270I [* god]
给定一个大小为 \(2^k\times 2^k\) 的矩阵 \(A\),给定点集 \(S\) 为 \(\{(x_i,y_i)\}\),定义一次操作为选定 \(p,q,w\) 然后给所有 \(A[(x_i+p)\mod 2^k][(y_i+q)\mod 2^k]\) 异或上 \(w\)
求最少操作多少次使得矩阵归 \(0\),\(k\le 9,|S|\le 99\) 且 \(|S|\) 为奇数。
Solution
神仙题。
我们重新定义矩阵乘法为:
\(A\times B=C\) 即 \(C[x][y]=\bigoplus_{i=0}^{2^k-1}\bigoplus_{j=0}^{2^k-1} a[i][j]\times b[(i-x)\mod 2^k][(j-y)\mod 2^k]\)
同时定义矩阵 \(F\) 为 \(F[x_i][y_i]=1\)
不难发现一组 \(p,q\) 只会操作一次。
不难发现我们的目标变为找到一组矩阵 \(Z\) 使得 \(F\times Z=A\),且 \(Z\) 中非 \(0\) 元素尽可能少。
在此运算规则下,仍然存在逆元即 \(I[0][0]=1\)
考虑 \(F^{-1}\) 如何得到,我们可以证明他即为 \(F^{2^k-1}\)
考虑 \(F^{2}\),只有 \(F[2x_i\mod 2^k][2y_i\mod 2^k]\) 可能存在值,因为 \(F[x_i+x_j][y_i+y_j]\) 会被 \(i+j\) 和 \(j+i\) 异或两次。
所以不难发现 \(F^{2^k}\) 只有 \(F[0][0]\) 可能为 \(1\)
又因为初始只有奇数个 \(1\),所以平方之后也会有奇数个 \(1\),所以 \(F[0][0]=1\)
所以 \(F\times Z=A\),即 \(Z=A\times F^{2^k-1}=A\times \prod_{i=0}^{k-1} F^{2^i}\)
目前一次乘法的复杂度为 \(\mathcal O((4^k)^2)\),但是由于 \(F^{i}\) 中至多只有 \(t\) 个 \(1\),所以其实是可以做到 \(\mathcal O(4^k\times t)\) 的。
综上,本题可以做到 \(\mathcal O(kt\cdot 4^k)\)