1 条题解

  • 0
    @ 2025-8-24 22:33:03

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar hy233
    每天摆烂的菜狗

    搬运于2025-08-24 22:33:03,当前版本为作者最后更新于2024-04-28 20:29:18,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


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

    我们不妨用广义矩阵刻画这一转移:设 ai\boldsymbol{a_i} 为第 ii 行的数所构成的向量,fi\boldsymbol{f_i} 为修改完前 ii 行之后第 ii 行构成的向量。令 $\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}$,则 fi=fi1Aai\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}$,第 nn 行没有下一行给他消了,所以 fn=0\boldsymbol{f_n=0}。化简把 f1\boldsymbol{f_1} 提出可得:

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

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

    Proof:考虑方程 xA=v\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 } $$

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

    $$\left\{\begin{matrix} 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.$$

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

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

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

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

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

    • 1

    信息

    ID
    6705
    时间
    1500ms
    内存
    512MiB
    难度
    7
    标签
    递交数
    0
    已通过
    0
    上传者