1 条题解

  • 0
    @ 2026-9-9 9:01:27

    题解

    思路

    令 dpi(x)dp_i(x) 表示前 ii 个位置合法且 Xi=xX_i=x 的方案数,Si=∑xdpi(x)S_i=\sum_x dp_i(x)。

    做法

    加入上界 Ai+1A_{i+1} 后,有 dpi+1(x)=Si−dpi(x)dp_{i+1}(x)=S_i-dp_i(x)(x≤Ai+1x\le A_{i+1}),其余位置为零。所有可能的 xx 上,dpi(x)dp_i(x) 始终是若干连续区间上的常值函数;每一步先把定义域截到 Ai+1A_{i+1},再对保留区间统一执行 y↦Si−yy\mapsto S_i-y,若定义域变长,新增部分的值为 SiS_i。

    用栈记录这些常值段的长度和基准值,并用一个全局符号与偏移量懒惰表示所有段共同经历的仿射变换。定义域缩小时,每个段至多被弹出一次;变长时只增加一个段,因此总操作次数为 O(N)O(N)。同时维护各段值乘长度之和即可得到新的 Si=Ai+1Si−1−∑x≤Ai+1dpi(x)S_i=A_{i+1}S_{i-1}-\sum_{x\le A_{i+1}}dp_i(x)。

    复杂度

    时间复杂度为 O(N)O(N),空间复杂度为 O(N)O(N)。

    • 1

    信息

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