CF1152F

题意

洛谷

做法

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

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

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

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

原文地址:https://www.cnblogs.com/Grice/p/12935042.html