题面

传送门

给定一个长度为\(L\)的序列\(A\)。然后每次掷一个标有\(1\)到\(m\)的公平骰子并将其上的数字加入到初始为空的序列\(B\)的末尾,如果序列B中已经出现了给定序列\(A\),即\(A\)是\(B\)的子串,则停止,

求序列\(B\)的期望长度。\(L ≤ 10^5\)

题解

不知道概率生成函数是什么的可以看看这篇文章,题解也在里面了

//minamoto
#include<bits/stdc++.h>
#define R register
#define fp(i,a,b) for(R int i=(a),I=(b)+1;i<I;++i)
#define fd(i,a,b) for(R int i=(a),I=(b)-1;i>I;--i)
#define go(u) for(int i=head[u],v=e[i].v;i;i=e[i].nx,v=e[i].v)
using namespace std;
char buf[1<<21],*p1=buf,*p2=buf;
inline char getc(){return p1==p2&&(p2=(p1=buf)+fread(buf,1,1<<21,stdin),p1==p2)?EOF:*p1++;}
int read(){R int res,f=1;R char ch;while((ch=getc())>'9'||ch<'0')(ch=='-')&&(f=-1);for(res=ch-'0';(ch=getc())>='0'&&ch<='9';res=res*10+ch-'0');return res*f;
}
char sr[1<<21],z[20];int C=-1,Z=0;
inline void Ot(){fwrite(sr,1,C+1,stdout),C=-1;}
void print(R int x){if(C>1<<20)Ot();if(x<0)sr[++C]='-',x=-x;while(z[++Z]=x%10+48,x/=10);while(sr[++C]=z[Z],--Z);sr[++C]='\n';
}
const int N=1e5+5,P=1e4;
inline int add(R int x,R int y){return x+y>=P?x+y-P:x+y;}
inline int mul(R int x,R int y){return 1ll*x*y-1ll*x*y/P*P;}
int bin[N],kmp[N],a[N],n,p,res,pos;
int main(){
//  freopen("testdata.in","r",stdin);p=read(),bin[0]=1;fp(i,1,1e5)bin[i]=mul(bin[i-1],p);for(int T=read();T;--T){n=read();fp(i,1,n)a[i]=read();kmp[0]=kmp[1]=0;for(R int i=2,j=0;i<=n;++i){while(j&&a[j+1]!=a[i])j=kmp[j];j+=(a[j+1]==a[i]),kmp[i]=j;}pos=n,res=0;while(pos)res=add(res,bin[pos]),pos=kmp[pos];printf("%04d\n",res);}return 0;
}

转载于:https://www.cnblogs.com/bztMinamoto/p/10560884.html

洛谷P4548 [CTSC2006]歌唱王国(概率生成函数)相关推荐

  1. P4548 [CTSC2006]歌唱王国

    P4548 [CTSC2006]歌唱王国 题目描述 Solution 这一题在<具体数学(混泥土数学)>里讲得很详细了啊,这里相当于总结一下,想具体了解的直接看书吧. 我们先考虑字符集为2 ...

  2. 洛谷P4550 收集邮票(概率期望)

    传送门 神仙题啊--这思路到底是怎么来的-- ps:本题是第$k$次买邮票需要$k$元,而不是买的邮票标号为$k$时花费$k$元 我们设$g[i]$表示现在有$i$张,要买到$n$张的期望张数,设$P ...

  3. 【洛谷 P5850】 calc加强版(生成函数+NTT)

    传送门 先看做无序的最后乘上 n ! n! n! 显然可以构造生成函数 ∏ ( 1 + i x ) \prod(1+ix) ∏(1+ix) 分治 n t t ntt ntt好像也可以过?不过不知道为啥 ...

  4. 【洛谷P4841】城市规划【指数型生成函数】【麦克劳林级数】【多项式对数】

    传送门 题意:求NNN个点的带标号无向连通简单图的个数. N≤130000N \leq 130000N≤130000 这个问题的主要矛盾在于连通 这个并不好表示,但可以用这个表示出不要求连通的方案数 ...

  5. 洛谷.3802.小魔女帕琪(概率)

    题目链接 /* 设f[i]表示当前i往后6位没有重复ai的次数,n = ∑a[i] 则 f[i] = a1/n * a2/(n-1) * a3/(n-2) * a4/(n-3) * a5/(n-4) ...

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

    正题 题目链接:https://www.luogu.com.cn/problem/P4548 题目大意 ttt次询问,给出一个长度为mmm的串SSS和一个空串TTT,每次在TTT后面随机加入1∼n1\ ...

  7. 【洛谷4389】付公主的背包(生成函数,多项式运算)

    [洛谷4389]付公主的背包(生成函数,多项式运算) 题面 有一个容量最多为\(10^5\)的背包 有\(n\)种物品,数量无限,题解是\(v_i\) 给定一个\(m\),求所有\(s\in[1,m] ...

  8. 洛谷刷题C语言:切蛋糕、概率、Bridž、NOTE、DOMINO

    记录洛谷刷题C语言qaq [NOI Online 2021 入门组] 切蛋糕 题目描述 Alice.Bob 和 Cindy 三个好朋友得到了一个圆形蛋糕,他们打算分享这个蛋糕. 三个人的需求量分别为 ...

  9. 洛谷P5488 | FFT+生成函数+二项式定理

    前言 因为最近在学习生成函数和多项式有关的内容,很多这方面的东西也不是很懂,所以很多地方可能讲得不好或者是不清楚还请读者们见谅. 那么关于这道题呢,它是我前段时间刚学生成函数时见过的题目.当时由于是刚 ...

  10. 洛谷 P4546 bzoj 5020 在美妙的数学王国中畅游 —— LCT+泰勒展开

    题目:https://www.luogu.org/problemnew/show/P4546 先写了个55分的部分分,直接用LCT维护即可,在洛谷上拿了60分: 注意各处 pushup,而且 spla ...

最新文章

  1. linux 不能运行程序代码,linux-无法在Ubuntu上运行我自己的OpenGL 3程序
  2. navbar build by Bootstrap3.x + RubyOnRails +Haml
  3. python 根据字典中值的大小对项进行排序
  4. 【Protocol Buffer】Protocol Buffer入门教程(八):Windows平台部署Protobuf环境
  5. android12适配机型,OPPO率先适配安卓12版本
  6. jsp主板 jtp_最新主板常见故障及解决(新)
  7. linux常用命令整理1
  8. 技术发展杂谈——RTC、WebRTC、VP9(2018年的文章)
  9. pic16 hex 逆向c语言,PIC单片机的十六进制文件格式:Hex文件
  10. c 获取本地计算机ip,C++如何获取本机的IP地址
  11. 哈尔滨工业大学计算机科学与技术学院许博文,王轩-哈尔滨工业大学(深圳)计算机科学与技术学院...
  12. 2021-09-252021年中式烹调师(中级)考试技巧及中式烹调师(中级)证考试
  13. 最新青龙面板安装教程+依赖+拉库合集
  14. 存储过程之八-java代码调用oracle存储过程
  15. 2021年第16届首尔国际电视节圆满落幕
  16. uniapp中的picker选择器
  17. 电工电子技术------含受控源电路的分析
  18. 【uni-app】基础知识篇
  19. smurf攻击的工作原理
  20. 了解在Flash中的编程工作

热门文章

  1. 记一次物理服务器Linux系统中未找到网卡的处理方式
  2. FR公式形态定义及运用范例
  3. $.getjson异常信息提示_【Java视频教程】day24-异常??????
  4. 优酷ts转换mp4_下载腾讯视频并转成MP4
  5. java lib_JavaLib
  6. package.json详解
  7. Ubuntu 搜狗输入法崩溃
  8. Hadoop数据分析实例:P2P借款人信用风险实时监控模型设计
  9. SIFT特征原理与理解
  10. RPC框架dubbo架构原理及使用说明