1 条题解

  • 0
    @ 2025-8-24 22:55:42

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar Liuxizai
    https://liuxizai.ac.cn | QQ 1684671488

    搬运于2025-08-24 22:55:42,当前版本为作者最后更新于2024-02-28 21:31:20,作者可能在搬运后再次修改,您可在原文处查看最新版

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

    以下是正文


    Description

    给一张 n×mn\times m 的网格,每个格子上有数字 090\sim 91-1,其中 1-1 表示该格子被封锁。可以在网格上走出一条路径,要求相邻格子四联通,可以经过相同格子,不可以经过被封锁的格子,路径的权值为将格子上的数字按顺序拼成十进制数并对 P=1145141P=1145141 取模的值。支持两种操作:

    1. 修改一个格子上的数。
    2. 查询是否存在从 (sx,sy)(sx,sy)(tx,ty)(tx,ty)、权值为 vv 的路径。

    操作共 qq 次。

    1n,m500,1q2×1051\le n,m\le 500,1\le q\le 2\times 10^5

    Solution

    若对网格黑白染色后,同色格上的数字相同,注意这包含了所有格子上的数都相同的情况,我们可以枚举黑白格子上的数字,然后 O(P)O(P) 预处理出每个权值是否可达,询问时直接查表即可。也可以使用数学方法。

    我们断言,除上述情况之外我们总能找到一组解。

    考虑构造证明这一结论。

    若「同色格上的数字相同」这一条件不满足,我们总是可以找到四联通的三个格子 A,B,CA,B,C,对应数字分别为 a,b,ca,b,c,满足 aca\ne c。考虑从起点走到 BB,然后走若干 BABB\to A\to BBCBB\to C\to B,最后从 BB 走到终点。这里前后两段路径带来的权值都是常数,只要证明能在 A,B,CA,B,C 三个格子上走出任意权值,就证明了整条路径可以取到任何权值。

    通过 BABB\to A\to BBCBB\to C\to B 构成的路径的权值形如 b?b?b?bb\overline{b?b?b?b\dots b},其中 ?? 表示 aacc。令路径长度为 2×(P1)×(P1)+12\times(P-1)\times(P-1)+1,所有 bb 对权值的贡献是常数,每个 ?? 的贡献为 aacc 乘上位权 100k100^k,其中 kk1(P1)×(P1)1\sim(P-1)\times(P-1)。首先令 ?? 都为 aa,此时计算得到一个权值,接下来考虑将若干 aa 替换成 cc,我们要证明这样可以将权值调整至任何数。注意我们有 100P11(modP)100^{P-1}\equiv 1\pmod P,位权 100k100^k 中满足 (P1)k(P-1)\mid kkk 共有 P1P-1 个,仅依靠这些位可以将路径的权值加上不超过 P1P-1cac-a,由于 aca\ne cP=1145141P=1145141 是质数,所以 t(ca)modP,t[0,P1]Zt(c-a)\bmod P,t\in[0,P-1]\cap\mathbb Z 可以取遍 0P10\sim P-1 中的所有数,于是路径权值可以为任何数。

    注意以上证明仅需 PP 是质数就可成立,不需要有关 1010102=10010^2=100 的任何性质。

    于是,对于每次查询,我们只需要判断起点和终点是否在同一个连通块,以及连通块内的同色格上数字是否相同即可。

    由于会对格子的封锁状态进行修改,使用线段树分治 + 可撤销并查集维护,复杂度 O(P+(nm+q)logqlognm)O(P+(nm+q)\log q\log nm)PP 来自预处理。

    Code

    • 1

    信息

    ID
    9652
    时间
    3000ms
    内存
    1024MiB
    难度
    7
    标签
    递交数
    0
    已通过
    0
    上传者