P4548-[CTSC2006]歌唱王国【概率生成函数,KMP】

正题

题目链接:https://www.luogu.com.cn/problem/P4548


题目大意

ttt次询问,给出一个长度为mmm的串SSS和一个空串TTT,每次在TTT后面随机加入1∼n1\sim n1n的字符,直到TTT中出现SSS为止,求期望次数。

1≤n≤105,t≤50,1≤m≤1051\leq n\leq 10^5,t\leq 50,1\leq m\leq 10^51n105,t50,1m105


解题思路

对于一个随机的数字XXX,它的概率生成函数是一个形如
F(x)=∑i=0∞P(X=i)xiF(x)=\sum_{i=0}^\infty P(X=i)x^iF(x)=i=0P(X=i)xi
F′(x)=∑i=1∞P(X=i)ixi−1F'(x)=\sum_{i=1}^\infty P(X=i)ix^{i-1}F(x)=i=1P(X=i)ixi1
不难发现数字XXX的期望值就是E(X)=F′(1)E(X)=F'(1)E(X)=F(1)
然后还有一个不知道有啥用的XXX的方差(大概就是离散程度)
V(X)=F′′(1)+F′(1)−F′(1)2V(X)=F''(1)+F'(1)-F'(1)^2V(X)=F(1)+F(1)F(1)2

这题的话,设两个生成函数,F(x)F(x)F(x)表示停止时间XXX的概率生成函数,还有一个G(x)G(x)G(x)表示没有停止时间的概率(不是概率生成函数),具体地
G(x)=∑i=0∞P(i<X)xiG(x)=\sum_{i=0}^\infty P(i<X)x^iG(x)=i=0P(i<X)xi
然后我们就有两个式子
xG(x)+1=F(x)+G(x)xG(x)+1=F(x)+G(x)xG(x)+1=F(x)+G(x)
这个式子的含义很好理解,在还没有结束的序列后面加入一个字符要么结束了要么没结束。
(xn)mG(x)=∑i=1m(xn)m−ibiF(x)\left(\frac{x}{n}\right)^mG(x)=\sum_{i=1}^m \left(\frac{x}{n}\right)^{m-i}b_iF(x)(nx)mG(x)=i=1m(nx)mibiF(x)
bib_ibi表示iii是否是串SSS的一个borderborderborder,这个式子的意思就是说在直接在未结束的TTT后面插入一个SSS,此时可能提前结束。

然后这两个式子怎么用呢,我们对第一个式子求导就有
G(x)+G′(x)=F′(x)+G′(x)⇒F′(x)=G(x)G(x)+G'(x)=F'(x)+G'(x)\Rightarrow F'(x)=G(x)G(x)+G(x)=F(x)+G(x)F(x)=G(x)
也就是说我们要求的E(X)=F′(1)=G(1)E(X)=F'(1)=G(1)E(X)=F(1)=G(1)
然后直接带入第二个式子,因为有F(1)=1F(1)=1F(1)=1,所以
(1n)mG(1)=∑i=1m(1n)m−ibiF(1)\left(\frac{1}{n}\right)^mG(1)=\sum_{i=1}^m \left(\frac{1}{n}\right)^{m-i}b_iF(1)(n1)mG(1)=i=1m(n1)mibiF(1)
⇒G(1)=∑i=1mnibi\Rightarrow G(1)=\sum_{i=1}^mn^ib_iG(1)=i=1mnibi
KMPKMPKMP求出bbb数组即可。

时间复杂度O(Tm)O(Tm)O(Tm)


code

#include<cstdio>
#include<cstring>
#include<algorithm>
#define ll long long
using namespace std;
const ll N=1e5+10,P=1e4;
ll T,m,n,pw[N],a[N],nxt[N];
signed main()
{scanf("%lld%lld",&m,&T);pw[0]=1;for(ll i=1;i<N;i++)pw[i]=pw[i-1]*m%P;while(T--){scanf("%lld",&n);ll ans=0;for(ll i=1;i<=n;i++)scanf("%lld",&a[i]);for(ll i=2,j=0;i<=n;i++){while(j&&a[j+1]!=a[i])j=nxt[j];j+=(a[j+1]==a[i]);nxt[i]=j;}for(ll i=n;i;i=nxt[i])(ans+=pw[i])%=P;printf("%04lld\n",ans);}return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/318300.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

YBTOJ:字符匹配(KMP)

文章目录题目描述解析代码题目描述 解析 显然应该要尝试套kmp的板子 关键是如何套 也就是那个判断匹配的条件是什么的问题 本题的关键是当kmp匹配时&#xff0c;匹配位之前的所有位大小关系的顺序都是匹配的&#xff0c;所以我们只需要看当前位即可 考虑对b预处理出3个数组&a…

历史上的今天(history)+ 勇者斗恶龙(dragon)

朋友们我来了&#xff0c;好久都没有更新了&#xff0c;手实在痒痒&#xff0c;不撸两道&#xff0c;内心过意不去 文章目录A&#xff1a;历史上的今天&#xff08;history&#xff09;题目题解代码实现B&#xff1a; 勇者斗恶龙&#xff08;dragon&#xff09;题目描述题解代…

Codeforces Round #694 Div. 2

Codeforces Round #694 Div. 2 CodeForces 1471A Strange Partition CodeForces 1471B Strange List CodeForces 1471C Strange Birthday Party 签到题 稍有难度 CodeForces 1471D Strange Definition CodeForces 1471E Strange Shuffle CodeForces 1471F Strange Housing

领域驱动设计,让程序员心中有码(四)

#领域驱动设计&#xff0c;让程序员心中有码&#xff08;四&#xff09;----------------------追忆有关分层的古老往事我一直认为&#xff0c;程序员也是艺术家&#xff0c;他们撰写的每一行代码&#xff0c;是献给这大好世界的优美诗篇。不同的人&#xff0c;写的代码也许风格…

YBTOJ洛谷P4551:最长异或路径(trie树)

洛谷传送门 文章目录题目描述解析代码题目描述 解析 本题关键就在于一点&#xff1a; 若把每个点的深度dep[i]定义为从根到节点边权的异或和 那么i到j的路径异或和可以表示为&#xff1a; dep[i] ^ dep[j] 首先要是i、j在不同子树上显然成立 如果他们在同一子树上&#xff0c;…

P5074-Eat the Trees【插头dp】

正题 题目链接:https://www.luogu.com.cn/problem/P5074 题目大意 给出一个nmn\times mnm的网格&#xff0c;有的必须铺线有的不能&#xff0c;铺成若干条闭合回路&#xff0c;求方案数。 1≤n,m≤121\leq n,m\leq 121≤n,m≤12 解题思路 考虑插头dpdpdp&#xff0c;因为可以…

初赛—算法复杂度

对于 \(T(n) a\times T(\frac{n}{b})c\times n^k\) 这样的递归关系&#xff0c;有这样的结论&#xff1a; \(a>b^k\) 则有 &#xff1a; \(T(n) O(c\times n^{\log_{b} a})\)\(ab^k\) 则有 &#xff1a; \(T(n) O(c\times n^k\times log n)\)\(a<b^k\) 则有 &#xff…

1414. 牛异或

题意&#xff1a; 区间长度为n的数组a&#xff0c;取连续一段子序列&#xff0c;问哪段子序列的异或和最大&#xff0c;如果存在多个这样的序列&#xff0c;那么选择序列末端整数对应的编号更小的那个序列。 如果仍然存在多个可选的序列&#xff0c;那么选择长度最短的那个序列…

基于Asp.Net Core打造轻量级内部服务治理RPC(一)

继之前的《Asp.Net Core Docker 搭建》文章末尾说过的&#xff0c;将陆续编写基于asp.net core 打造一个内部服务治理的rpc框架。不过前端时间较忙&#xff0c;所以搁置了一段时间。闲话不多说&#xff0c;下面就来讲讲为什么需要去做一个该框架&#xff0c;以及想法的来源和设…

P7046-「MCOI-03」诗韵【SAM,倍增,树状数组】

正题 题目链接:https://www.luogu.com.cn/problem/P7046 题目大意 给出一个长度为 nnn 的字符串&#xff0c;然后 mmm 次把它的一个子串加入集合。如果一个字符串在这个集合中作为字符串的后缀出现次数大于 kkk 那么这个字符串就会被计入贡献。 每次求计入贡献的字符串数和最…

YBTOJ:前缀询问(trie树)

文章目录题目描述解析代码题目描述 解析 &#xff08;没有做出来&#xff0c;这个ans的处理方式其实也不难想…qwq&#xff09; 考虑把T都作为模板串加入trie树 加入每个模板串自然就是按照i顺序的 所以我们在插入t的时候沿途标记一下 新出现的未标记的i的间隔就是当前的i与上…

DP专练1( [NOIP 2003]加分二叉树 + 太空梯 )

我们先慢慢来加分二叉树题目题解简单讲解前序//中序//后序遍历代码实现太空梯题目题解代码实现加分二叉树 题目 题解 简单讲解前序//中序//后序遍历 其实说白了&#xff0c;这个*序就是根root的遍历顺序 先序就是root–>left–>right 中序就是left–>root–>rig…

P1896 [SCOI2005]互不侵犯

P1896 [SCOI2005]互不侵犯 题目&#xff1a; 在NN的棋盘里面放K个国王&#xff0c;使他们互不攻击&#xff0c;共有多少种摆放方案。国王能攻击到它上下左右&#xff0c;以及左上左下右上右下八个方向上附近的各一个格子&#xff0c;共8个格子。 题解&#xff1a; 需要知道…

AT2368-[AGC013B]Hamiltonish Path【构造】

正题 题目链接:https://www.luogu.com.cn/problem/AT2368 题目大意 给出 nnn 个点 mmm 条边的一张无向图&#xff0c;然后求一条路径满足 路径长度不小于二。路径无交。对于所有的 xxx 与路径的端点相连&#xff0c;那么 xxx 在路径上。 1≤n,m≤1051\leq n,m\leq 10^51≤n,…

YBTOJ:运动积分(trie树)

文章目录题目描述解析代码题目描述 解析 做了巨长时间… 进行了一次刺激的阅读理解竞赛… 感谢whh dalao&#xff01; 那么让我们分析一下这道题 首先我们考虑单个求x选手的q值 不难发现 i 在第j天和x的大小关系只与a[x]与a[i]二进制下不同的最高位k有关 j的第k位与x相同时&am…

年终总结,我为什么离开舒适区?

当圣诞夜过去&#xff0c;也意味着这一年即将结束&#xff0c;迎来崭新的开始&#xff0c;一年时间既短暂&#xff0c;又漫长&#xff0c;当离开人生的舒适区&#xff0c;将迎来一个又一个的挑战。如果说一个人的优秀&#xff0c;取决于他天赋&#xff0c;以及他为之付出的额外…

NC16886 炮兵阵地

题目&#xff1a; n*m个网格&#xff0c;有平原&#xff0c;有山地&#xff0c;平原可以放部队&#xff0c;部队攻击范围如图&#xff08;不受地形影响&#xff09;&#xff08;H为山地&#xff0c;P为平原&#xff09; 题解&#xff1a; 确定状态&#xff1a; 因为每个炮可…

CF891B-Gluttony【构造】

正题 题目链接:https://www.luogu.com.cn/problem/CF891B 题目大意 给出nnn个数字互不相同的一个序列aaa&#xff0c;求它的一个排列bbb&#xff0c;使得选出任意一个1∼n1\sim n1∼n的下标真子集&#xff0c;都有aaa的对应下标和不等于bbb的对应下标和。 1≤n≤22,0≤ai≤10…

DP专练2 (大理石 + [ZJOI 2010]数字计数)

你肯定以为DP专练会有很多题&#xff0c; 但是请考虑一下本仙女的DP码力&#xff0c;一次性能更几个题。。。 来吧&#xff0c;别害怕呀~~ 文章目录大理石题目题解代码实现数字计数题目题解代码实现大理石 题目 林老师是一位大理石收藏家&#xff0c;他在家里收藏了n块各种…

二阶常系数齐次线性递推数列

定义 若数列 \(\{a\}\) 满足 \(a_nc_1a_{n-1}c_2a_{n-2}\) &#xff0c;\(c_1,c_2\) 为常数&#xff0c;就称这种数列为二阶常系数齐次线性递推数列。 求解 加入能够将递推关系式改写为 \((a_n-ka_{n-1})p(a_{n-1}-ka_{n-1})\) 的形式&#xff0c;就可以求出 \(a_n-ka_{n-1}\) …