洛谷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

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

如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网进行投诉反馈,一经查实,立即删除!


相关文章:

  • vue中:key 和react 中key={} 的作用,以及ref的特性?
  • [CF1137E]Train Car Selection[维护凸壳]
  • ios手机Safari本地服务连不上
  • 20个Flutter实例视频教程-01节底部导航栏和切换效果的制作-1
  • 遍历结构体内部元素和值(Name and Value)
  • #paragma详解
  • C#项目需求分析
  • 6.16.5
  • Vue简易博客总结
  • struct过滤器和拦截器的区别
  • java中数组操作常见的三个错误
  • shell 构建脚本基础
  • c语言数据结构学习心得——栈
  • MySQL学习笔记:一道group by+group_concat解决的小问题
  • [SDOI2009] HH去散步 (矩阵乘法)
  • BUAA OO 2019 第一单元作业总结
  • HAOI2018 反色游戏
  • 软件工程导论 四则运算
  • 安卓系统怎么样不Root激活XPOSED框架的方法
  • 页面滚动可视区域的获取
  • VScode加文件头的方式
  • jar包引用版本不一致引发的问题
  • [Swift]LeetCode831. 隐藏个人信息 | Masking Personal Information
  • 解决:win10在空白处右键资源管理器重启的故障
  • idea取消vim模式
  • 关于RabbitMQ Queue Argument的简介
  • unittest框架(惨不忍睹低配版)
  • vmware vsphere出现“需要整合虚拟机磁盘”的告警处理方法(完整版)
  • webpack遇见的坑:Please install 'webpack-cli' in addition to webpack itself to use the CLI.
  • Docker for Windows(一)下载与安装
  • 21 , CSS 构造模型
  • 简述数据库优化
  • Golang 入门 : 打造开发环境
  • JavaWeb项目服务端获取客户端的IP地址
  • Kafka分区分配策略(Partition Assignment Strategy
  • [Linux]不可重入函数
  • 交叉熵反向求导计算过程
  • UML第二次作业 类图中类的表示
  • poj 1852 Ants
  • 你真的懂JavaScript基础类型吗
  • UVALive 5760 Alice and Bob
  • Jason与Xml的解析过程
  • 安装grid时找不到ASM共享磁盘
  • 洛谷.5283.[十二省联考2019]异或粽子(可持久化Trie 堆)
  • BOMDOM
  • Hive——元数据表含义
  • 2072=删数问题
  • Python_装饰器精讲_33
  • 使用Google zxing生成二维码
  • 影之刃简介