[CTSC2006]歌唱王国
[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;
}
}
[CTSC2006]歌唱王国的更多相关文章
- bzoi1152 [CTSC2006]歌唱王国Singleland
[CTSC2006]歌唱王国Singleland Time Limit: 30 Sec Memory Limit: 162 MB Description 在歌唱王国,所有人的名字都是一个非空的仅包含整 ...
- 【BZOJ】1152: [CTSC2006]歌唱王国Singleland
题解 读错题了,是最后留下一个牛人首长歌颂他,和其他人没有关系,t就相当于数据组数 结论题,具体可看 https://www.zhihu.com/question/59895916/answer/19 ...
- 洛谷P4548 [CTSC2006]歌唱王国(概率生成函数)
题面 传送门 给定一个长度为\(L\)的序列\(A\).然后每次掷一个标有\(1\)到\(m\)的公平骰子并将其上的数字加入到初始为空的序列\(B\)的末尾,如果序列B中已经出现了给定序列\(A\), ...
- Luogu4548 CTSC2006 歌唱王国 概率生成函数、哈希
传送门 orz ymd 考虑构造生成函数:设\(F(x) = \sum\limits_{i=0}^\infty f_ix^i\),其中\(f_i\)表示答案为\(i\)的概率:又设\(G(x) = \ ...
- luogu P4548 [CTSC2006]歌唱王国
传送门 这题\(\mathrm{YMD}\)去年就讲了,然而我今年才做(捂脸) 考虑生成函数,设\(f_i\)表示最终串长为\(i\)的概率,其概率生成函数为\(F(x)=\sum f_ix^i\), ...
- 题解 [CTSC2006]歌唱王国
题目传送门 Desctiption 见题面. Solution 人类智慧... 考虑这样一个赌博游戏,现在有一个猴子,它随机从 \(1\sim n\) 中选一个打出来.现在有若干个赌徒,他们一开始都有 ...
- 洛谷 P4548 - [CTSC2006]歌唱王国(概率生成函数)
洛谷题面传送门 PGF 入门好题. 首先介绍一下 PGF 的基本概念.对于随机变量 \(X\),满足 \(X\) 的取值总是非负整数,我们即 \(P(v)\) 表示 \(X=v\) 的概率,那么我们定 ...
- 【BZOJ1152】歌唱王国(生成函数,KMP)
[BZOJ1152]歌唱王国(生成函数,KMP) 题面 BZOJ 洛谷 题解 根据\(YMD\)论文来的QwQ. 首先大家都知道普通型生成函数是\(\displaystyle \sum_{i=0}^{ ...
- 【题解】歌唱王国(概率生成函数+KMP)+伦讲的求方差
[题解]歌唱王国(概率生成函数+KMP)+伦讲的求方差 生成函数的本质是什么呀!为什么和It-st一样神 设\(f_i\)表示填了\(i\)个时候停下来的概率,\(g_i\)是填了\(i\)个的时候不 ...
随机推荐
- mybatis-generator 详细配置及使用,爬坑记录
mybatis-generator 详细配置及使用,爬坑记录 提示:如果不成功一定是项目路径和 数据库配置出问题,本篇基于 MySQL 8.0.13,调试没有问题. 如果失败,建议使用相同的项目结构, ...
- JavaScript arguments对象
1.在JavaScript中,arguments对象是比较特别的一个对象,实际上是当前函数的一个内置属性.arguments非常类似Array,但实际上又不是一个Array实例.可以通过如下代码得以证 ...
- python 使用else代替状态变量
翻看公司的代码文档,在代码风格文档中,写着:为了提高代码的可维护性,代码中减少flag这类状态变量的使用.这个问题,平时确实没有想过,面对这种需求时,第一反应就是使用flag标记状态.那么使用什么样的 ...
- Webpack打包报"JavaScript heap out of memory"错误
问题 开发项目有一段时间了,随着项目越来越大,打包的时间也相应的变长了,打包时的内存也增多了.这时候产生了一个问题,在发布项目的时候,会出现JavaScript heap out of memory错 ...
- python基础一数据类型之列表
摘要: python基础一中写到列表,那么这篇主要讲列表. 1,定义列表 2,列表.元祖.字符串都属于序列,都可以用用索引和切片. 3,列表的方法 1,定义列表 list1 = ['a','b',1, ...
- oracle like模糊查询简单用法
like 用法介绍: 1.“_”:匹配单个任意字符 select * from bqh3 where name like '_崔'; 2.“%”:匹配0个或多个任意字符.但有三种情况如下: like ...
- python基础学习22----协程
协程,又称微线程.英文名Coroutine. 协程最大的优势就是协程极高的执行效率.因为子程序切换不是线程切换,而是由程序自身控制,因此,没有线程切换的开销,和多线程比,线程数量越多,协程的性能优势就 ...
- beta冲刺————第三天(3/5)
完善的具体内容: 前端: (1)可以进行修改文字大小背景 其中,金色的文字个人觉得很好看,点赞.(我很满意啊) (2)可以改变成夜间模式(也很不错啊) 后端: 尝试将本地的后端war文件,以及数据库传 ...
- 团队作业——Alpha冲刺 11/12
团队作业--Alpha冲刺 冲刺任务安排 杨光海天 今日任务:预览界面布局实现,并留下交互接口 明日任务:预览界面中自定义保存的实现 郭剑南 今日任务:尝试解决Python编写程序无法在Android ...
- linux网络工具iproute2的使用简介
一.写本文的目的 本文完全是自己在学习iproute2的过程中搜集的大杂烩,记录在这里,方便以后自己查询学习,图片都是来自网络,在此表示感谢! 二.简单了解iproute2工具套装 iproute2是 ...