F2 重做

CF1349F2

从小到大,从后往前放,即写出一个放东西的顺序序列 { p i } \{p_i\} {pi},将其划分成若干段极长的下降序列,每一段从小到大对应一个数字。假设要求出 t t t 的答案,我们可以枚举每个处于第 t t t 个下降序列的位置并统计它的贡献 ∑ i ways i , t ( n i ) ( n − i ) ! \sum_{i}\text{ways}_{i,t}\binom{n}{i}(n-i)! iwaysi,t(in)(ni)!
其中 ways i , j \text{ways}_{i,j} waysi,j 表示长为 i i i 的排列,划分成 j j j 个极长下降段的方案数
这显然是可以容斥的
ways i , j = ∑ k ≥ j { i i − k } ( i − k ) ! ( − 1 ) k − j ( k j ) \text{ways}_{i,j}=\sum_{k\ge j}\begin{Bmatrix}i\\i-k\end{Bmatrix}(i-k)!(-1)^{k-j}\binom{k}{j} waysi,j=kj{iik}(ik)!(1)kj(jk)
即对每一个 t t t 算出
n ! ∑ i ≤ n ∑ k [ z i ] ( e z − 1 ) i − k ( − 1 ) t − k ( t k ) = n ! ∑ k ( − 1 ) t − k ( t k ) ∑ i ≤ n [ z i ] ( e z − 1 ) i − k n!\sum_{i\le n}\sum_{k}[z^i](e^z-1)^{i-k}(-1)^{t-k}\binom{t}{k}\\=n!\sum_{k}(-1)^{t-k}\binom{t}{k}\sum_{i\le n}[z^i](e^z-1)^{i-k} n!ink[zi](ez1)ik(1)tk(kt)=n!k(1)tk(kt)in[zi](ez1)ik
对每个 k k k 求出
∑ k ≤ i ≤ n [ z i ] ( e z − 1 ) i − k = ∑ k ≤ i ≤ n [ z k ] ( e z − 1 z ) i − k \sum_{k\le i\le n}[z^i](e^z-1)^{i-k}\\=\sum_{k\le i\le n}[z^k](\frac{e^z-1}{z})^{i-k} kin[zi](ez1)ik=kin[zk](zez1)ik
f = e z − 1 z , g = e z − 1 f=\frac{e^z-1}{z},g=e^z-1 f=zez1,g=ez1
即求 [ z k ] f n − k + 1 − 1 f − 1 = [ z n + 1 ] g n − k + 1 − 1 f − 1 [z^k]\frac{f^{n-k+1}-1}{f-1}=[z^{n+1}]\frac{g^{n-k+1}-1}{f-1} [zk]f1fnk+11=[zn+1]f1gnk+11
一个技巧是,若要对每个 k k k 求出
[ z n ] F ( z ) G ( z ) k [z^n]F(z)G(z)^k [zn]F(z)G(z)k
我们写成
[ z n u k ] ∑ i F ( z ) ( u G ( z ) ) i = F ( z ) 1 − u G ( z ) [z^nu^k]\sum_{i}F(z)(uG(z))^i=\frac{F(z)}{1-uG(z)} [znuk]iF(z)(uG(z))i=1uG(z)F(z)
然后进行拉格朗日反演

[ z n u k ] F ( z ) 1 − u G ( z ) = [ z n − 1 u k ] 1 n ( F ( G − 1 ( z ) ) 1 − u z ) ′ ( z G ( z ) ) n = [ z n − 1 u k ] 1 n ( u F ( G − 1 ( z ) ) ( 1 − u z ) 2 + F ( G − 1 ( z ) ) ′ 1 − u z ) ( z G ( z ) ) n [z^nu^k]\frac{F(z)}{1-uG(z)}=[z^{n-1}u^k]\frac{1}{n}(\frac{F(G^{-1}(z))}{1-uz})'(\frac{z}{G(z)})^n\\=[z^{n-1}u^k]\frac{1}{n}(\frac{uF(G^{-1}(z))}{(1-uz)^2}+\frac{F(G^{-1}(z))'}{1-uz})(\frac{z}{G(z)})^n [znuk]1uG(z)F(z)=[zn1uk]n1(1uzF(G1(z)))(G(z)z)n=[zn1uk]n1((1uz)2uF(G1(z))+1uzF(G1(z)))(G(z)z)n
套用到这道题上就可以了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FSYo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值