[Solution] P7783 「MCOI-Zero / AC6-M14」Gracemeria Patrol

· · 题解

如果确定了第一行的操作,那么其他行的操作也确定了。因为若操作了前 i 行,第 i+1 行的位置能操作当且仅当其正上方为 1

我们不妨用广义矩阵刻画这一转移:设 \boldsymbol{a_i} 为第 i 行的数所构成的向量,\boldsymbol{f_i} 为修改完前 i 行之后第 i 行构成的向量。令 \boldsymbol A=\begin{bmatrix} 1 & 1 & 0 & 0 & \cdots \\ 1 & 1 & 1 & 0 & \cdots \\ 0 & 1 & 1 & 1 & \cdots \\ \vdots & \vdots & \vdots & \vdots & \ddots \\ \end{bmatrix},则 \boldsymbol{f_i=f_{i-1}A\oplus a_i}。其中 \oplus 为异或。

所以 \boldsymbol{f_n=((f_1A\oplus a_2)A\oplus a_3\cdots)A\oplus a_n},第 n 行没有下一行给他消了,所以 \boldsymbol{f_n=0}。化简把 \boldsymbol{f_1} 提出可得:

\boldsymbol{f_1A^{n-1}=\sum_{i=2}^na_iA^{n-i}}

右边显然可以预处理,如果 \boldsymbol{A^{-1}} 存在那么移到右边去就结束了。打表发现 \boldsymbol{A^{-1}} 不存在当且仅当 m \equiv 2 \pmod 3

Proof:考虑方程 \boldsymbol{xA=v}

\boldsymbol{\exist x_1\ne x_2,x_1A=x_2A=v\Leftrightarrow (x_1-x_2)A=0\Leftrightarrow \exist u\ne 0,uA=0 }

如果存在 \boldsymbol{uA=0},那么 \boldsymbol{f_1} 就有多个解,不符合条件。尝试构造这样的 \boldsymbol{u},上式等价于:

u_1\oplus u_2=0 \\ u_1\oplus u_2\oplus u_3=0 \\ \cdots\\ u_{m-2}\oplus u_{m-1}\oplus u_m=0\\ u_{m-1}\oplus u_m=0 \end{matrix}\right.

u_1=u_2=0,则\boldsymbol{u=0}

否则 u_1=u_2=1\boldsymbol{u}=(1,1,0,1,1,0,\cdots),当且仅当 m \equiv 2 \pmod 3 时满足 u_{m-1}\oplus u_m=0

所以当 m \equiv 2 \pmod 3\boldsymbol{xA=v} 有多解,反之则有唯一解。 归纳可以得到 \forall k,\boldsymbol{xA^k=v} 有着同样的性质。

所以区间询问时,当 m \equiv 2 \pmod 3 时我们输出 -1,否则直接解出 \boldsymbol{f_l=(\sum_{i=l+1}^ra_iA^{r-i})A^{-(r-l)}}。验证一下 \boldsymbol{a_l} 是否可以唯一得到 \boldsymbol{f_l} 即可。k=l 时,答案为 \boldsymbol{a_l\rightarrow f_l} 需要的操作次数,反之即为

关于数值计算,预处理 $\boldsymbol{A^k},k\in [-n,n]$,$\boldsymbol{\sum_{i=l+1}^ra_iA^{r-i}}$ 类似的东西可以差分计算。注意到 $m\le 50$,用 `ull` 压一下可以去掉一个 $m$ ,复杂度 $O(nm^2+qm)$。