[CTSC2006]歌唱王国

Tags:题解


题意

链接:在空串后不断随机添加字符,直到出现串\(S_i\)为止。求最终串的期望长度。\(\sum |S_i|\le 5*10^6\)

题解

以下内容来自\(YMD\)的2018年集训队论文

很奇怪的生成函数题:

令\(f[i]\)表示串最终长度为\(i\)的概率,\(g[i]\)表示到达长度\(i\)还没有结束的概率。分别对应生成函数\(F(x),G(x)\)。最后要求的就是\(F'(1)\)(求导,相当于每个概率都乘上了指数也就是长度,变成了期望)。

会有两个式子:$$G(x)x+1=F(x)+G(x)$$$$G(x)(\frac{1}{m}x)L=\sum_{i=1}{L}a_iF(x)(\frac{1}{m}x)^{L-i}$$第一个式子:在没有结束的串后随意添加一个字符,可能结束也可能没有结束,+1是为了补齐余项。

第二个式子:\(L\)表示\(|S|\),\(m\)是字符集,\((bool)a_i\)表示\(i\)是不是一个\(border\)。在没有结束的串后加\(S\),可能加到第\(L-i\)个字符就结束了,这个时候要求\(i\)是原串的\(border\)。

这里\(border\)的含义是\(S_{1...i}=S_{n-i+1...n}\)。

将第一个式子求导:$$F'(x)+G'(x)=G'(x)*x+G(x)$$故\(F'(1)=G(1)\)

将\(x=1\)代入第二个式子得$$G(1)(\frac{1}{m})L=\sum_{i=1}La_iF(1)(\frac{1}{m}){L-i}$$又因为$F(1)=1$(概率和为1),所以$$F'(1)=G(1)=\sum_{i=1}{L}a_im^i$$用KMP求每个位置上的\(Border\)就好了

代码

#include<iostream>
using namespace std;
const int N=1e5+10,mod=1e4;
int s[N],v[N],nxt[N],l,n,t;
int main()
{
cin>>n>>t;v[0]=1;
for(int o=1;o<=t;o++)
{
int l,ans=0;cin>>l;
for(int i=1;i<=l;i++) scanf("%d",&s[i]),v[i]=v[i-1]*n%mod;
for(int i=2;i<=l;i++)
{
int j=nxt[i-1];
while(s[i]!=s[j+1]&&j) j=nxt[j];
nxt[i]=s[i]==s[j+1]?j+1:j;
}
for(int p=l;p;p=nxt[p]) (ans+=v[p])%=mod;
cout<<ans/1000%10<<ans/100%10<<ans/10%10<<ans%10<<endl;
}
}

最新文章

  1. EventBus总线讲解
  2. mysql命令总结
  3. delphi 获取两个颜色差值
  4. Oracle 10g实现存储过程异步调用
  5. PS4 Razor GPU
  6. VBS基础篇 - wscript 对象
  7. POJ 3185 The Water Bowls(高斯消元-枚举变元个数)
  8. 使用滚动条(ActionBar)
  9. 杭电ACM2020--绝对值排序
  10. 虚拟机下centos7.x简易命令大全与试玩体验
  11. AI 生成式对抗网络(GAN)
  12. 【CF434D】Nanami&#39;s Power Plant 最小割
  13. Objective-C ARC下IBOutlet属性是用weak还是strong来修饰
  14. C# 动态解析表达式
  15. 【Python】【Web.py】python调用html【问题:echart图标调用html上未显示】
  16. DotNetOpenAuth 使用指南
  17. InterSystems Ensemble学习笔记(二) Ensemble创建镜像, 实现自动故障转移
  18. Noip模拟题 Matrix [递推,组合数]
  19. 转:C#实现office文档转换为PDF或xps的一些方法
  20. ubuntu开机执行指令或脚本

热门文章

  1. url override and HttpSession implements session for form
  2. encode()、decode()字符编码问题
  3. elasticsearch DSL查询
  4. 展示博客(Alpha版本)
  5. 2.Dubbo2.5.3注册中心和监控中心部署
  6. 四、 git关联远程仓库及推送
  7. Android 7.0以上版本 系统解决拍照的问题 exposed beyond app through ClipData.Item.getUri()
  8. php 微信公众号接入支付宝支付
  9. Docker技术入门与实战 第二版-学习笔记-1-镜像
  10. 爬虫header和cookie