1 条题解

  • 0
    @ 2026-9-9 9:23:07

    题解

    思路

    把能够被同一次操作同时标记的两条边连起来,所有网格边会沿对角方向分成若干互不影响的链。

    做法

    对一条含 kk 条边的链,可得到的标记集合等价于在路径上选择若干互不相邻的二元组。设其方案数为 aka_k,按最左边是否被标记分类可得 a0=a1=1a_0=a_1=1、ak=ak−1+ak−2a_k=a_{k-1}+a_{k-2}。

    令 n=min⁡(H,W)n=\min(H,W)、m=∣H−W∣m=|H-W|。整理所有链的长度后,答案为 (a2a4⋯a2n)2a2n+1m(a_2a_4\cdots a_{2n})^2a_{2n+1}^{m}。预处理斐波那契型数列 aia_i,再预处理偶数下标的前缀乘积 bn=∏i=1na2ib_n=\prod_{i=1}^{n}a_{2i};每组询问输出 bn2a2n+1mb_n^2a_{2n+1}^{m},幂用快速幂计算。

    复杂度

    预处理复杂度为 O(max⁡(H,W))O(\max(H,W)),每组询问复杂度为 O(log⁡∣H−W∣)O(\log|H-W|),空间复杂度为 O(max⁡(H,W))O(\max(H,W))。

    • 1

    信息

    ID
    1677
    时间
    2000ms
    内存
    1024MiB
    难度
    10
    标签
    递交数
    1
    已通过
    1
    上传者