CF1152F

题意

洛谷

做法

按数字的大小从小到大考虑该数填的位置
假如我们现在考虑数\(x\)\(x\)可以放在序列的末尾;若\([x-m,x)\)有数填过了,也可以放在其的前面,则将其的状态状压下来

\(f_{i,j,k}\)表示当前的数是\(i\),序列中已经放了\(j\)个数,\([i−m,i)\)的状态为\(k\)时的答案
\(S=2^m-1\)

\[\begin{aligned} &不放:f_{i,j,k}\rightarrow f_{i+1,j,k<<1\&S}\\ &放:(\operatorname{bit}k+1)f_{i,j,k}\rightarrow f_{i+1,j+1,k<<1\&S|1}\\ \end{aligned}\]

把后两维压到一维,然后矩阵快速幂

猜你喜欢

转载自www.cnblogs.com/Grice/p/12935042.html