1 条题解

  • 0
    @ 2026-5-3 7:34:22

    考虑固定 kk 求出序列 bb。首先一定是要最小化 b1b_1,因此第一段不可能延到 val>b1val>b_1 的位置,处理出 nxtinxt_i 表示下一个 aj>aia_j>a_i,剩余 k>1k>1 个点没放时,设当前在 pp,若 ap<ap+1a_p<a_{p+1} 则直接跳到 p+1p+1,否则后继是 argmin(p+1min(nk+1,nxtp1))\text{argmin}(p+1\sim\min(n-k+1,nxt_p-1))

    对于单个 kk 模拟依然没有很好的性质,可以对于 kk 从大到小扫描线,因为 kk 相当于限制了后继的自由程度,kk 越小自由程度越高,将询问离线到 kk 上。k+1kk+1\to k,从上一个决策的子序列中找到首个可以调整决策成更优的位置,由于它是因为被剩余点数限制导致第一次满足,所以后面的选取一定是后缀全连续选上。

    使用数据结构维护这个子序列,处理出 toito_i 表示下一个 aj<aia_j<a_i,一个段 (p,nxtp)(p,nxt_p) 的所有决策形如不断跳 toto 且这个过程一直在 nxtpnxt_p 之前,时刻维护它的下一步决策,在对应的 kk 加入这个移动的决策即可。查询直接在数据结构二分即可。时间复杂度 O(nlogn)\mathcal O(n\log n)

    • 1

    信息

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