1 条题解

  • 1
    @ 2023-5-6 10:32:35

    首先容易观察出这个东西是个半群。操作为 1-side 矩形修改,1-side 矩形查询,且两个方向不同。

    如果允许离线,一种常用方法是对下标扫描线,做到 O(qlogq)O(q\log q)。然而不允许,急。

    考虑时间线段树,每个节点维护当前子树内所有半群信息在所有位置的并,容易发现对一段长为 LL 的区间,只有 O(L)O(L) 个本质不同的半群信息连续段。

    采用归并(二进制分组)合并信息,修改的总复杂度为 O(qlogn)O(q\log n) 的,或者说均摊 O(logn)O(\log n)。之所以是 logn\log n 而不是 logq\log q 是因为对于长度达到 O(n)O(n) 的段本质不同信息只有 O(n)O(n) 个。

    容易发现其实这个就是一颗归并树。

    查询时找到相关的节点,在上面二分即可,复杂度 O(lognlogq)O(\log n\log q)

    • 1

    信息

    ID
    3821
    时间
    3000ms
    内存
    1024MiB
    难度
    8
    标签
    (无)
    递交数
    29
    已通过
    6
    上传者