Skip to content

CF1913D Array Collapse 笔记

对于 ai,如果选择 [i,j] 满足 aj>aiai 删去,那么 [i,j] 中所有小于 ai 的数都会被删去,去除一个区间内全部大 / 小于某个数的数,考虑笛卡尔树。

当递归到笛卡尔树的 u 点时,大于 au 的数都是祖先,小于 au 的数都是子树,如果选择 au 左侧的祖先删去 au,那么只能保留 au 的右子树,反之同理。

考虑 DP,设 fu 表示考虑在 u 及其子树中进行删除的方案数(考虑删空),通过递归时记录两个状态,即可判断 u 是否有左侧的祖先和右侧的祖先。

  • 保留 ufufls×frs
  • 不保留 u
    • 有左侧祖先:fufrs
    • 有右侧祖先:fufls
    • u 子树全部删空可能会被统计两次,若同时有左右侧祖先,应当 1

时空复杂度 O(n)

最近更新