洛谷P4548 [CTSC2006]歌唱王国(概率生成函数)
题面
传送门
给定一个长度为\(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]歌唱王国(概率生成函数)相关推荐
- P4548 [CTSC2006]歌唱王国
P4548 [CTSC2006]歌唱王国 题目描述 Solution 这一题在<具体数学(混泥土数学)>里讲得很详细了啊,这里相当于总结一下,想具体了解的直接看书吧. 我们先考虑字符集为2 ...
- 洛谷P4550 收集邮票(概率期望)
传送门 神仙题啊--这思路到底是怎么来的-- ps:本题是第$k$次买邮票需要$k$元,而不是买的邮票标号为$k$时花费$k$元 我们设$g[i]$表示现在有$i$张,要买到$n$张的期望张数,设$P ...
- 【洛谷 P5850】 calc加强版(生成函数+NTT)
传送门 先看做无序的最后乘上 n ! n! n! 显然可以构造生成函数 ∏ ( 1 + i x ) \prod(1+ix) ∏(1+ix) 分治 n t t ntt ntt好像也可以过?不过不知道为啥 ...
- 【洛谷P4841】城市规划【指数型生成函数】【麦克劳林级数】【多项式对数】
传送门 题意:求NNN个点的带标号无向连通简单图的个数. N≤130000N \leq 130000N≤130000 这个问题的主要矛盾在于连通 这个并不好表示,但可以用这个表示出不要求连通的方案数 ...
- 洛谷.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) ...
- P4548-[CTSC2006]歌唱王国【概率生成函数,KMP】
正题 题目链接:https://www.luogu.com.cn/problem/P4548 题目大意 ttt次询问,给出一个长度为mmm的串SSS和一个空串TTT,每次在TTT后面随机加入1∼n1\ ...
- 【洛谷4389】付公主的背包(生成函数,多项式运算)
[洛谷4389]付公主的背包(生成函数,多项式运算) 题面 有一个容量最多为\(10^5\)的背包 有\(n\)种物品,数量无限,题解是\(v_i\) 给定一个\(m\),求所有\(s\in[1,m] ...
- 洛谷刷题C语言:切蛋糕、概率、Bridž、NOTE、DOMINO
记录洛谷刷题C语言qaq [NOI Online 2021 入门组] 切蛋糕 题目描述 Alice.Bob 和 Cindy 三个好朋友得到了一个圆形蛋糕,他们打算分享这个蛋糕. 三个人的需求量分别为 ...
- 洛谷P5488 | FFT+生成函数+二项式定理
前言 因为最近在学习生成函数和多项式有关的内容,很多这方面的东西也不是很懂,所以很多地方可能讲得不好或者是不清楚还请读者们见谅. 那么关于这道题呢,它是我前段时间刚学生成函数时见过的题目.当时由于是刚 ...
- 洛谷 P4546 bzoj 5020 在美妙的数学王国中畅游 —— LCT+泰勒展开
题目:https://www.luogu.org/problemnew/show/P4546 先写了个55分的部分分,直接用LCT维护即可,在洛谷上拿了60分: 注意各处 pushup,而且 spla ...
最新文章
- linux 不能运行程序代码,linux-无法在Ubuntu上运行我自己的OpenGL 3程序
- navbar build by Bootstrap3.x + RubyOnRails +Haml
- python 根据字典中值的大小对项进行排序
- 【Protocol Buffer】Protocol Buffer入门教程(八):Windows平台部署Protobuf环境
- android12适配机型,OPPO率先适配安卓12版本
- jsp主板 jtp_最新主板常见故障及解决(新)
- linux常用命令整理1
- 技术发展杂谈——RTC、WebRTC、VP9(2018年的文章)
- pic16 hex 逆向c语言,PIC单片机的十六进制文件格式:Hex文件
- c 获取本地计算机ip,C++如何获取本机的IP地址
- 哈尔滨工业大学计算机科学与技术学院许博文,王轩-哈尔滨工业大学(深圳)计算机科学与技术学院...
- 2021-09-252021年中式烹调师(中级)考试技巧及中式烹调师(中级)证考试
- 最新青龙面板安装教程+依赖+拉库合集
- 存储过程之八-java代码调用oracle存储过程
- 2021年第16届首尔国际电视节圆满落幕
- uniapp中的picker选择器
- 电工电子技术------含受控源电路的分析
- 【uni-app】基础知识篇
- smurf攻击的工作原理
- 了解在Flash中的编程工作