题解:P16433 [APIO 2026 中国赛区] 上升

· · 题解

一个自然的容斥做法。

不妨先枚举排列哪些位置是上升的,哪些位置是下降的,再计数这种情况的方案数。

如果既有上升也有下降的限制,限制情况比较复杂不太好做,考虑把其中一边容斥掉。

如果将所有上升容斥成下降,那么排列会被划分为若干个极长下降段。根据题目中的性质,所有未缺失位置上的元素是单调递增的,则每个下降段中至多有一个未缺失位置。

具体来说,对于一个位置:

则对于每个位置,强制其下降的系数为 1-w,不做任何限制的系数为 w

继续考虑这个下降段的形式,若一个长度为 x 的下降段没有未缺失位置,则需要任意选择 x 个值填进去。否则其中只有一个未缺失位置,记这个位置的值为 p,同一下降段内左右分别有 x,y 个元素,则需要选择 x>p 的值,y<p 的值。

这与 P14364 [CSP-S 2025] 员工招聘 的形式几乎一样。考虑从前往后 dp 这个结构的话,会依次有若干位置要求填入 >p<p 的值,且 p 是递增的。考虑与这题一样的做法,把 >p 的限制全部容斥成 <p 的,在 dp 过程中记录有多少位置选择填入一个 <p 的值。

具体来说,记 f_{i,j} 表示将 1\sim i 分解为若干下降段,且选择了 j 个位置填入 <p

b_i 为下标 \le i 的所有位置有多少空位,s_i 表示值 \le i 的有多少没有出现。

转移考虑往后枚举一个新的下降段 [i+1,k]

注意到事实上第二种转移分为 x,y 两步,可以分段转移。具体来说,若第 i 个位置未缺失,记 g_{i,j}i 所在下降段左侧部分已经决策好,有 j<p

容易分析其复杂度为 O(n^3)