题解:P16433 [APIO 2026 中国赛区] 上升
Lonely_NewYear · · 题解
一个自然的容斥做法。
不妨先枚举排列哪些位置是上升的,哪些位置是下降的,再计数这种情况的方案数。
如果既有上升也有下降的限制,限制情况比较复杂不太好做,考虑把其中一边容斥掉。
如果将所有上升容斥成下降,那么排列会被划分为若干个极长下降段。根据题目中的性质,所有未缺失位置上的元素是单调递增的,则每个下降段中至多有一个未缺失位置。
具体来说,对于一个位置:
- 下降,系数为
1 - 上升,容斥为下降,系数
-w - 上升,不容斥,即忽略这个限制,系数
w
则对于每个位置,强制其下降的系数为
继续考虑这个下降段的形式,若一个长度为
这与 P14364 [CSP-S 2025] 员工招聘 的形式几乎一样。考虑从前往后 dp 这个结构的话,会依次有若干位置要求填入
具体来说,记
记
转移考虑往后枚举一个新的下降段
-
若这一段没有未缺失值,则任意填入
k-i 个值,且降序排序。考虑f_{i,j} 中已经包括了b_i-j 个同类型转移,则需要把这k-i 个数与b_i-j 归并起来,系数为b_i-j+k-i\choose k-i ,转移到f_{k,j} 。这一部分复杂度O(n^3) 。 -
若这一段有一个未缺失值为
p ,其左右各有x,y 个位置,则需要填入x 个>p ,y 个<p 的数。枚举x 中有z 个容斥成<p ,剩余x-z 个位置可以任意填入,则需要从s_p-j 个<p 的数中选择z+y 个,再将x-z 个和b_i-j 归并,系数为(-1)^z{s_p-j\choose z+y}{b_i-j+x-z\choose x-z} ,转移到f_{k,j+z+y} 。这一部分复杂度O(n^4) 。 -
另外还有每个位置上升或下降的系数
w_i\prod_{l=i+1}^{k-1}(1-w_l) 。
注意到事实上第二种转移分为
-
对于每个
f_{i,j} ,记其右侧第一个未缺失位置为k ,其值为p ,则取下降段左侧部分[i,k) ,其长度为x=k-i ,枚举z 个容斥掉,系数为(-1)^z{s_p-j\choose z}{b_i-j+x-z\choose x-z} ,转移到g_{k,j+z} 。 -
对于每个未缺失位置
i 和g_{i,j} ,枚举其右侧部分(i,k] ,其长度为y=k-i ,系数为s_p-j\choose y ,转移到f_{k,j+y} 。 -
另外还有每个位置上升或下降的系数。
容易分析其复杂度为