codevs 5966 [SDOI2017]硬币游戏
输入输出数据精度为1e-10
[题解]
#include<cstdio> using namespace std; const int N=1e3+5; char s[N][N]; long double ec[N],f[N][N]; int va[N],vb[N]; int n,m; void MakeMatrix(){ec[m]=1;for(int i=m-1;i;i--) ec[i]=ec[i+1]*0.5;for(int i=1;i<=n;i++){va[1]=0;for(int k=2,p=0;k<=m;k++){while(p&&s[i][k]!=s[i][p+1]) p=va[p];if(s[i][k]==s[i][p+1]) p++;va[k]=p;}for(int j=1;j<=n;j++){vb[0]=0;for(int k=1,p=0;k<=m;k++){while(p&&s[j][k]!=s[i][p+1]) p=va[p];if(s[j][k]==s[i][p+1]) p++;vb[k]=p;}for(int now=vb[m];now;now=va[now]) f[i][j]+=ec[now];}f[i][n+1]=1;} } void Guass(){for(int i=1;i<=n;i++){for(int j=i+1;j<=n+1;j++) f[i][j]/=f[i][i];f[i][i]=1;for(int j=i+1;j<=n;j++){for(int k=i+1;k<=n+1;k++){f[j][k]-=f[i][k]*f[j][i];}}}for(int i=n;i;i--){for(int j=i+1;j<=n;j++){f[i][n+1]-=f[i][j]*f[j][n+1];}}long double sum=0,ans=0;for(int i=1;i<=n;i++) sum+=f[i][n+1];for(int i=1;i<=n;i++){ans=f[i][n+1];ans/=sum;printf("%.10f\n",(double)ans);} } int main(){scanf("%d%d",&n,&m);for(int i=1;i<=n;i++) scanf("%s",s[i]+1);MakeMatrix();Guass();return 0; }
转载于:https://www.cnblogs.com/shenben/p/6696516.html
codevs 5966 [SDOI2017]硬币游戏相关推荐
- [Sdoi2017]硬币游戏 [高斯消元 KMP]
[Sdoi2017]硬币游戏 题意:硬币序列,H T等概率出现,\(n \le 300\)个人猜了一个长为$ m \le 300$的字符串,出现即获胜游戏结束.求每个人获胜概率 考场用了[1444: ...
- 【BZOJ4820】[SDOI2017]硬币游戏(高斯消元)
[BZOJ4820][SDOI2017]硬币游戏(高斯消元) 题面 BZOJ 洛谷 题解 第一眼的感觉就是构\(AC\)自动机之后直接高斯消元算概率,这样子似乎就是\(BZOJ1444\)了.然而点数 ...
- P3706 [SDOI2017]硬币游戏
P3706 [SDOI2017]硬币游戏 题目描述 Solution 前置技能: P4548 [CTSC2006]歌唱王国 歌唱王国就是n=1n=1n=1的情况. 我们用类似的方法,先考虑两个串的情况 ...
- BZOJ:4820: [Sdoi2017]硬币游戏BZOJ:1444: [Jsoi2009]有趣的游戏(高斯消元求概率)
1444: [Jsoi2009]有趣的游戏 4820: [Sdoi2017]硬币游戏 这两道题都是关于不断随机生成字符后求出现给定字符串的概率的问题. 第一题数据范围较小,将串建成AC自动机以后,以A ...
- BZOJ4820 [SDOI2017]硬币游戏
BZOJ4820 [SDOI2017]硬币游戏 题面:BZOJ 解析 考虑把所有没有到达结束状态的字符串看做一类字符串\(N\),把以字符串\(i\)作为结束的一类字符串\(i\).现在假设猜测了两个 ...
- bzoj 4820: [Sdoi2017]硬币游戏 概率dp+高斯消元+KMP
题意 周末同学们非常无聊,有人提议,咱们扔硬币玩吧,谁扔的硬币正面次数多谁胜利. 大家纷纷觉得这个游戏非常符合同学们的特色,但只是扔硬币实在是太单调了. 同学们觉得要加强趣味性,所以要找一个同学扔很多 ...
- [SDOI2017]硬币游戏
考虑生成函数来做 g(x)函数就是0+0*x+...+1*x^s+...+|∑|^(n-s)x^n 就是最后s位必须填这个串,但是前面随便填的方案数 然后枚举之前出现了哪个串(包括自己),如果没有相交 ...
- BZOJ.4820.[SDOI2017]硬币游戏(思路 高斯消元 哈希/AC自动机/KMP)
BZOJ 洛谷 建出AC自动机,每个点向两个儿子连边,可以得到一张有向图.参照 [SDOI2012]走迷宫 可以得到一个\(Tarjan\)+高斯消元的\(O((nm)^3)\)的做法.(理论有\(6 ...
- bzoj4820 [Sdoi2017]硬币游戏 高斯消元+概率+kmp
有环的概率是可以高斯消元的 由于匹配情况可能从一个串转移到另一个串,所以需要建一个转移关系的图 就可以建一个ac自动机,但节点数是nm的.就可以设未知数,然后凑一些方程. 设N表示没有任何人获胜的概率 ...
最新文章
- oracle查询用户连接记录,记录ORACLE用户登录信息
- apxs php5,安装PHP5和PHP7
- OWASP Mutillidae II:保持冷静并保持警惕——闯关小结
- HEVC/H265 性能分析
- python工程师工资多少-不止 20K,Python 工程师的薪资再度飙升!
- ObjectC基础之函数调用
- python怎么根据度分布生成网络_python度分布图
- 手把手教你写电商爬虫-第一课 找个软柿子捏捏
- 基于JavaWeb的微博系统设计与实现
- 小组取什么名字好_2020鼠年男孩取什么名字好
- IE8 证书错误,导航已阻止,解决方法(selenium)
- Linux内核5.0版本五大模块及内核书籍推荐
- Java正则表达式的使用
- 一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第n次落地时,共经过多少米?第n次反弹多高?(以第十次为例)
- MySQL是怎么解决幻读问题的?
- 【一步步学OpenGL 31】 -《PN(Point-Normal)三角形曲面细分》
- JAVA软件开发之8例
- jquery chosen插件 动态更新数据
- strlen()和sizeof()求字符串长度
- 数据埋点|六个步骤实现数据埋点方案设计
热门文章
- 大学物理光学思维导图_在线思维导图软件安利:简单、方便画图,大学生、小学生都能用...
- JUnit5基本用法
- php获取url传参数乱码问题,php url地址栏传中文值乱码问题与解决方法
- main方法_十个经典的 Java main 方法面试题
- python书籍推荐1001python书籍推荐_Python的1001种骚操作——基础篇(0)
- Android10虚拟硬件,编辑 Android 虚拟设备属性
- Hibernate框架ORM的实现原理-不是技术的技术
- jQuery常用方法
- 常用adb shell 命令
- Java学习笔记2.5.2 循环结构 - 计数循环