2 条题解

  • 0
    @ 2025-12-16 17:29:01

    前置知识:使用动态规划求解最长上升子序列。

    首先一个合法序列需要满足的要求其实就是 aiai1,bibi1a_i\ge a_{i-1},b_i\ge b_{i-1},因此这很像最长上升子序列,回忆一下,最长上升子序列的状态定义是 dp[x]dp[x] 表示以 xx 处的数字结尾的最长上升子序列的长度。

    我们想类似定义dp数组,但发现还有一个交换操作,但其实交换也并不麻烦、只会多出每个位置一个状态,即我们可以定义:dp[x][0/1]dp[x][0/1] 表示以位置 xx 处作为结尾、位置 xx 处是否交换(第二维为 11 表示交换)时所对应的最长合法序列。转移时假设当前位置为 ii,枚举上一个位置 jj,如果能把 ai,bia_i,b_i(或bi,aib_i,a_i)接到 aj,bja_j,b_j(或bj,ajb_j,a_j)后面,则可以花费(ij1)c1(i-j-1)c_1来删除两者中间的那段。

    信息

    ID
    161
    时间
    1000ms
    内存
    256MiB
    难度
    6
    标签
    递交数
    20
    已通过
    5
    上传者