CF1553I

排列的单调且连续的区间一定互不相交,且由 aa 可以推出这些区间。

如果 a={3,3,3,1,1,1}a=\{3,3,3,1,1,1\},那么区间就是 {[1,3],[4,4],[5,5],[6,6]}\{[1,3],[4,4],[5,5],[6,6]\}。

设 a′a' 表示 aa 的相同数连续段长度,那么 a′={3,1,1,1}a'=\{3,1,1,1\}。

将 [1,n][1,n] 分配,方案数有 ∣a∣!|a|! 种,如上面的例子,如果取数顺序为 3,1,2,43,1,2,4,那么区间 [1,3][1,3] 分到了 2,3,42,3,4,可以推出排列 pp 为 2,3,4,5,1,6{2,3,4,5,1,6} 或 4,3,2,5,1,6{4,3,2,5,1,6}。

发现长度 ≥2\ge 2 的区间都有两种选择,方案数乘上 2x2^x,xx 表示长度 ≥2\ge 2 的区间个数。

然后出现问题,我们可能分配出来,使相邻的两个区间组成大区间,考虑把这些情况排除。

容易想到容斥,令 fif_i 表示至少 ii 对相邻区间合并,那么有:

ans=∑i=0len−1(−1)if(i)ans=\sum_{i=0}^{len - 1} (-1)^i f(i)

分析完了,考虑 dp。

设 fi,jf_{i,j} 表示考虑前 ii 个区间,并成 jj 段的方案数,枚举上一段结束的位置 ll,若 i=l+1i=l+1 且 ai′=1a'_i=1,那么 fl,j−1→fi,jf_{l,j-1}\to f_{i,j};否则 fl,j−1×2→fi,jf_{l,j-1}\times 2\to f_{i,j}。

最终 ans=∑i=1m(−1)m−ii!fm,ians=\sum\limits_{i=1}^{m}(-1)^{m-i}i!f_{m,i}。

前缀和优化可以做到 O(n2)\mathcal O(n^2)。

然后就过了????

容易发现合并段数不能丢,然后如果左边 xx 段,右边 yy 段,就会合并成 x+yx+y 段,贡献是乘积。

考虑分治 NTT,在中间要处理区间的合并。

posted @ 2023-11-05 11:56  蒟蒻orz  阅读(37)  评论(0)    收藏  举报  来源