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)\)

posted @ 2020-09-14 20:11  Soulist  阅读(164)  评论(0)    收藏  举报