1 条题解

  • 0
    @ 2025-8-24 23:09:54

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar Kingna
    We live and die in the shadows for those we hold close and for those we never meet.

    搬运于2025-08-24 23:09:54,当前版本为作者最后更新于2025-02-14 22:34:38,作者可能在搬运后再次修改,您可在原文处查看最新版

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

    以下是正文


    Subtask #1~2

    考虑 O(Qn2logn)O(Qn^2\log n) 的暴力,期望得分 2020 分。

    Subtask #7

    0x10\leq x\leq 1 答案为区间总数。且所有询问答案相等,求异或值时,如果 QQ 为偶数,答案就是 00。实际上在数据中 QQ 确实是偶数。

    Subtask #4~5

    询问的是一个后缀,直接预处理。考虑第 kk 大值至多 nn 种,那么对每一个 aia_i 处理出有多少个区间的第 mm 大值为 aia_i,则等于 aia_i 的区间个数就可以求解。查询的时候,直接二分寻找答案。

    考虑到区间 [l,r][l,r]aia_i 作为第 mm 大值,那么区间 [l,r][l,r] 中就恰好有 m1m-1 个数大于 aia_i。那么我们找到比 aia_i 大的位置。可能有下列 mm 种情况:

    • 左边有 m1m-1 个比 aia_i 大,右边有 00 个比 aia_i 大。
    • 左边有 m2m-2 个比 aia_i 大,右边有 11 个比 aia_i 大。
    • 以此类推。左边有 00 个比 aia_i 大,右边有 m1m-1 个比 aia_i 大。

    不难发现,还需要解决区间长度大于等于 KK 的问题。这等价于左端点从 [L1,R1][L_1,R_1] 中选择,右端点从 [L2,R2][L_2,R_2] 中选择,区间长度大于等于 KK 的选择方案数。可以用数学方法在 O(1)O(1) 时间内求解。

    现在只需要找到比 aia_i 大的位置。如果花费 O(logn)O(\log n) 时间去找每一个位置,比如 ST 表或线段树,则总复杂度为 O(nmlogn)O(nm\log n)。期望得分 5656

    Subtask #8

    用链表存储所有数字。按照 aia_i 从小到大扫的顺序,如果当前 aia_i 计算完毕,直接从链表中删除。此时链表中剩余的数字就是大于 aia_i 的数。

    查找比 aia_i 大的位置时,只需要左跳右跳就行。复杂度 O(nm)O(nm)

    期望得分 100100

    • 1

    信息

    ID
    10076
    时间
    3000ms
    内存
    140MiB
    难度
    6
    标签
    递交数
    0
    已通过
    0
    上传者