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]\}

aa' 表示 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,可以推出排列 pp2,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^xxx 表示长度 2\ge 2 的区间个数。

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

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

ans=i=0len1(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+1ai=1a'_i=1,那么 fl,j1fi,jf_{l,j-1}\to f_{i,j};否则 fl,j1×2fi,jf_{l,j-1}\times 2\to f_{i,j}

最终 ans=i=1m(1)mii!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  阅读(3)  评论(0编辑  收藏  举报  来源