ARC068D Solitaire
题意:将
将取出的牌按顺序排成一个序列,称之为「删除序列」。
求有多少种删除序列,使得
感谢 @BILL666 题解的指导,学到许多。
先来考虑如何判定一个序列是否是「删除序列」,且满足
观察产生删除序列的过程。
首先,双端队列填满时,一定形如单谷。从谷底
取出时,在取到
在取出
此时,队列中的
除了最后一个数以外,每一步从队列的两侧取都会得到不同的结果,于是方案数为
不妨强制每次都取较大的,不难发现,这样(仍然在做归并)构造出的一定是双股序列,且这是唯一一种得到双股序列的办法。
于是,我们统计第
根据
可以进一步发现,一个排列与其逆排列的 「双股性」
总是相同的(这不会改变偏序关系)。故「第
考虑
边界:
转移:
若
考虑排列的第二项
若
若
综上:
直接
在 Luogu4769 [NOI2018] 冒泡排序 中我们得到,双股序列的个数可以写成简单的组合数。所以我们也有希望在本题中更进一步。
将式子写成主动贡献,尝试编一个组合意义:路径。
- 当位于
时,可以前往 或 。但不能越过直线 。
先不考虑「不能越过直线
「越过直线
于是,不合法方案与「从
综上我们能得到: