1 条题解

  • 0
    @ 2025-8-24 22:39:51

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar critnos
    咔菲好喝。

    搬运于2025-08-24 22:39:51,当前版本为作者最后更新于2022-09-07 18:34:04,作者可能在搬运后再次修改,您可在原文处查看最新版

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

    以下是正文


    一血纪念。

    题目很抽象,大概意思是,给出一个操作序列 (Li,Ri,v)(L_i,R_i,v)vv 是幺半群中的元素。并且给出运算 \oplus,每次在操作序列末尾插入,或者询问给出 l,r,xl,r,x,按顺序遍历 [l,r][l,r] 中的操作,若 LixRiL_i\le x\le R_i 就把答案 v\oplus v,否则答案不变。强制在线。

    考虑在线构建操作序列的线段树,每次插入操作需要建立线段树上的若干节点。

    考虑建立的节点为自底向上的一条右链,那么注意到这里是可以对每个节点 pushup 的,此处的时间复杂度仍然为 O(nlogn)O(n\log n)

    那么可以合并儿子的信息。类似于分段函数合并,归并即可。

    那么问题就是在线段树上分解区间,对于分解出的区间,找到 xx 所属的区间,即找到前驱。

    考虑分散层叠的思想,在父节点保存两个子节点的归并序列并且指向子节点的序列的位置。那么只用在根节点二分一次,此后每次都可以直接定位到子节点的序列。对每个根进行定位,考虑从大到小维护 2k2^k 的分散层叠,每次选取 14\dfrac 1 412\dfrac 1 2 的点混合。

    这部分是口胡,代码待补。

    • 1

    [Ynoi2078] 《A Path Towards Autonomous Machine Intelligence》阅读报告(更新中...)

    信息

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