【省选模拟】20/06/09

A A A

  • 考虑求出循环节后就可以取模了
    直接 b s g s bsgs bsgs O ( T p ) O(T\sqrt p) O(Tp ) 可以得到 60 p t s 60pts 60pts
    数列类似斐波那契,循环节可以直接求,证明
    复杂度 O ( T k p ) O(Tk\sqrt p) O(Tkp ) 甚至可以 O ( T k p 1 / 4 ) O(Tkp^{1/4}) O(Tkp1/4) C o d e Code Code

B B B

  • 考虑一个组合意义,即确定排列和划分过后,每一段选择一对,若所有对都构成逆序对则产生 1 的贡献,对每个都为逆序对的概率进行计数,奇数位和奇数位的贡献可以简单计算,问题就是如何考虑偶数位和奇数位的贡献
    按大小关系可以建边,小的连向大的,那么偶数位可以串成一条链
    奇数位的贡献可以看成链上挂了若干个连入和连出的边,连出的边是没法搞的,按照氪金手游容斥
    考虑这颗内向树它合法的概率,钦定根为子树最大值,我们要做的就是对所有内向树合法的概率求和
    考虑这个概率是 ∏ 1 s i z e i \prod \frac{1}{size_i} sizei1,而每次连出去一个奇数点相当将一个 1 s i z e \frac{1}{size} size1 改成 1,
    d p i , j , k dp_{i,j,k} dpi,j,k 表示到 i i i 分了 j j j 段,子树大小为 k k k 的概率之和(这对应着连出去的边有 k k k 条),这里 1 ( k + i ) ! \frac{1}{(k+i)!} (k+i)!1 的概率最后算上,那么容易发现
    d p i , j , k = ∑ d p l , j − 1 , k 1 2 ( i − l 2 ) + ∑ d p l , j − 1 , k − 1 ( ∑ t = 1 i − l ( k + i + t ) ( t − i + l ) ) + { ∑ d p l , j − 1 , k ( i − l + 1 2 ) − ∑ d p l , j − 1 , k − 1 ( ∑ t = 1 i − l ( k + i + t ) t ) } dp_{i,j,k}=\sum dp_{l,j-1,k}\frac{1}{2}\binom{i-l}{2}+\sum dp_{l,j-1,k-1}(\sum_{t=1}^{i-l}(k+i+t)(t-i+l))\\+\{\sum dp_{l,j-1,k}\binom{i-l+1}{2}-\sum dp_{l,j-1,k-1}(\sum_{t=1}^{i-l} (k+i+t)t)\} dpi,j,k=dpl,j1,k21(2il)+dpl,j1,k1(t=1il(k+i+t)(ti+l))+{dpl,j1,k(2il+1)dpl,j1,k1(t=1il(k+i+t)t)}
    O ( n 4 ) O(n^4) O(n4),注意这里算的是所有排列中满足内向树合法的概率,而偶数位本身是排好序的,所以上述贡献要乘上 n ! n! n! C o d e Code Code

C C C

  • 回文自动机统计每个串的最长回文后缀的所有没有出现过的前缀,出现过的前缀存在一个最大长度 l e n len len,对应后缀数组上的一段区间,对这个长度二分即可, C o d e Code Code
  • 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、付费专栏及课程。

余额充值