1 条题解

  • 0
    @ 2025-8-24 21:57:54

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar EnofTaiPeople
    MGXS

    搬运于2025-08-24 21:57:53,当前版本为作者最后更新于2023-03-15 07:42:14,作者可能在搬运后再次修改,您可在原文处查看最新版

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

    以下是正文


    Part1 前言

    据说是经典题,经典题怎么能不会?

    题意给定 n,An,AQQ 组限制,要求对满足每一个限制的序列 ai[1,A]a_i\in[1,A] 计数。

    每一个限制形如 l,r,wl,r,w,要求 maxi=lrai=w\max\limits_{i=l}^ra_i=w

    Part2 发掘性质

    其实本题很开放,各种做法都可以。

    我们可以逐步发掘性质,首先可以将区间离散化,转换为若干个左闭右开区间,称为元素

    我们需要将 l,r,wl,r,w 转换为两个限制:

    i[l,r],aiw,i[l,r],ai=w\forall i\in[l,r],a_i\le w,\exists i\in[l,r],a_i=w

    发现如果一个限制区间内有元素被要求 maxai<w\max a_i<w,那么这个元素一定不会对该限制产生影响,可以去掉,而剩下的元素可以优先考虑本限制。

    Part3 转换为普通计数

    set 维护没有被删除的元素,将限制按 ww 从小到大考虑,将 ww 相同的限制放在一起计算,每次将被某一个区间包含的元素取出,删除。

    现在问题变成了,每个元素可以染成黑(存在等于 ww)白(全部小于 ww)使得所有区间都包含黑色元素的方案数。

    当然黑白颜色的方案数均不为一,可以默认全部都是白色,再做调整,这是一个普通计数问题。

    Part4 解决问题

    具体地,记 fif_i 表示第 ii 个元素染黑色,前面符合要求的方案数,sfisf_ifif_i 的前缀和。

    LiL_i 表示如果第 ii 个数染黑,上一个染黑的位置至少是多少,具体对于每一个限制 l,rl,rLr+1max{Lr+1,l}L_{r+1}\leftarrow\max\{L_{r+1},l\} 即可。

    然后 fi=(sfi1sfLi1)BiWif_i=(sf_{i-1}-sf_{L_i-1})\dfrac{B_i}{W_i},此处,BiB_i 表示第 ii 个元素然黑色的方案数,WiW_i 表示染白色的方案数。

    Part5 后记

    该方法可能不具有普适性,但常数和简易程度较为优秀。

    时间复杂度 O(Qlog(Q+M))O(\sum Q\log(Q+M)),空间 O(Q)O(Q),其中 MM 为模数。

    • 1

    信息

    ID
    3187
    时间
    1000ms
    内存
    512MiB
    难度
    6
    标签
    递交数
    0
    已通过
    0
    上传者