1 条题解

  • 0
    @ 2025-7-9 13:58:30

    考虑从小到大加数。加数时记录位置最前的两个递增的位置 pp (也就是第一次出现非完全倒序的地方),当加入当前数 ii 时,若 ii 插在 pp 的后面,则会形成满足条件的三元组,所以 ii 只能插在 1p1-p 的任意一个位置中,若插在位置 11 中,则 dp[p]dp[p] 转移到 dp[p+1]dp[p+1] ,若插在 2p2-p 中的其中一个位置 qpq \le p 则由 dp[p]dp[p] 转移到 dp[q]dp[q]

    然后对于没有限制数的即可得到一个 O(n3)O(n^3) 的dp,发现转移是一个后缀区间,即可使用后缀和优化变为 O(n2)O(n^2)

    现在考虑有限制数的情况,当加入 xx 时,在原来的 dpdp 上加上一维 dp[posx][p]dp[posx][p] ,插入时讨论一下 posxposx 是否需要后移一位,按照原方法做 dpdp 即可,时间复杂度为 O(n3)O(n^3)

    • 1

    信息

    ID
    576
    时间
    2000ms
    内存
    512MiB
    难度
    8
    标签
    (无)
    递交数
    33
    已通过
    6
    上传者