qiqing
2020-11-02 18:42:05
题意:给定如下构造长度为
3n 的排列P 的方法:
- 生成长度为
3n 的排列A , 然后将\forall k \in [0, N-1] ,A_{3k+1},A_{3k+2},A_{3k+3} 分成一块- 有
n 个指针,初始指向每个块的第一个数- 每次选择指针中最小的数放到
P 的末尾 ,然后指针指向块内后一个数求排列
P 总共有多少种
先手模几个排列P,然后发现这些排列有一些性质
构造排列P的方式是有单调性的,所以显然排列P也是有单调性的
若存在
A_1>A_2 或者A_2>A_3 ,则这两个数会被相邻地取出若存在
A_1>A_2 并且A_1>A_3 ,则这三个数也会被相邻取出必然相邻取出的情况分进一个单调内,块的大小不超过3
$\therefore$ 大小为2的块的数量 $\leqslant$ 大小为1的块的数量 在构造块的过程中,一定会按照*块的第一个元素*的大小进行排序构造出一个排列 因此,如果块合法,可以**唯一确定一个排列P**
考虑若块已知,如何填数,方案为
考虑差值DP
设
设
考虑右边增加的块进行转移
最后答案就是