codevs 5966 [SDOI2017]硬币游戏
输入输出数据精度为1e-10
[题解]



#include<cstdio>
using namespace std;
const int N=1e3+;
char s[N][N];
long double ec[N],f[N][N];
int va[N],vb[N];
int n,m;
void MakeMatrix(){
ec[m]=;
for(int i=m-;i;i--) ec[i]=ec[i+]*0.5;
for(int i=;i<=n;i++){
va[]=;
for(int k=,p=;k<=m;k++){
while(p&&s[i][k]!=s[i][p+]) p=va[p];
if(s[i][k]==s[i][p+]) p++;
va[k]=p;
}
for(int j=;j<=n;j++){
vb[]=;
for(int k=,p=;k<=m;k++){
while(p&&s[j][k]!=s[i][p+]) p=va[p];
if(s[j][k]==s[i][p+]) p++;
vb[k]=p;
}
for(int now=vb[m];now;now=va[now]) f[i][j]+=ec[now];
}
f[i][n+]=;
}
}
void Guass(){
for(int i=;i<=n;i++){
for(int j=i+;j<=n+;j++) f[i][j]/=f[i][i];
f[i][i]=;
for(int j=i+;j<=n;j++){
for(int k=i+;k<=n+;k++){
f[j][k]-=f[i][k]*f[j][i];
}
}
}
for(int i=n;i;i--){
for(int j=i+;j<=n;j++){
f[i][n+]-=f[i][j]*f[j][n+];
}
}
long double sum=,ans=;
for(int i=;i<=n;i++) sum+=f[i][n+];
for(int i=;i<=n;i++){
ans=f[i][n+];ans/=sum;
printf("%.10f\n",(double)ans);
}
}
int main(){
scanf("%d%d",&n,&m);
for(int i=;i<=n;i++) scanf("%s",s[i]+);
MakeMatrix();
Guass();
return ;
}
codevs 5966 [SDOI2017]硬币游戏的更多相关文章
- BZOJ:4820: [Sdoi2017]硬币游戏&&BZOJ:1444: [Jsoi2009]有趣的游戏(高斯消元求概率)
		1444: [Jsoi2009]有趣的游戏 4820: [Sdoi2017]硬币游戏 这两道题都是关于不断随机生成字符后求出现给定字符串的概率的问题. 第一题数据范围较小,将串建成AC自动机以后,以A ... 
- [Sdoi2017]硬币游戏 [高斯消元 KMP]
		[Sdoi2017]硬币游戏 题意:硬币序列,H T等概率出现,\(n \le 300\)个人猜了一个长为$ m \le 300$的字符串,出现即获胜游戏结束.求每个人获胜概率 考场用了[1444: ... 
- 【BZOJ4820】[SDOI2017]硬币游戏(高斯消元)
		[BZOJ4820][SDOI2017]硬币游戏(高斯消元) 题面 BZOJ 洛谷 题解 第一眼的感觉就是构\(AC\)自动机之后直接高斯消元算概率,这样子似乎就是\(BZOJ1444\)了.然而点数 ... 
- 4820: [Sdoi2017]硬币游戏
		4820: [Sdoi2017]硬币游戏 链接 分析: 期望dp+高斯消元. 首先可以建出AC自动机,Xi表示经过节点i的期望次数,然后高斯消元,这样点的个数太多,复杂度太大.但是AC自动机上末尾节点 ... 
- BZOJ4820 Sdoi2017 硬币游戏 【概率期望】【高斯消元】【KMP】*
		BZOJ4820 Sdoi2017 硬币游戏 Description 周末同学们非常无聊,有人提议,咱们扔硬币玩吧,谁扔的硬币正面次数多谁胜利.大家纷纷觉得这个游戏非常符合同学们的特色,但只是扔硬币实 ... 
- 【BZOJ4820】[Sdoi2017]硬币游戏 AC自动机+概率DP+高斯消元
		[BZOJ4820][Sdoi2017]硬币游戏 Description 周末同学们非常无聊,有人提议,咱们扔硬币玩吧,谁扔的硬币正面次数多谁胜利.大家纷纷觉得这个游戏非常符合同学们的特色,但只是扔硬 ... 
- [BZOJ 4820] [SDOI2017] 硬币游戏(高斯消元+概率论+字符串hash)
		[BZOJ 4820] [SDOI2017] 硬币游戏(高斯消元+概率论+字符串hash) 题面 扔很多次硬币后,用H表示正面朝上,用T表示反面朝上,会得到一个硬币序列.比如HTT表示第一次正面朝上, ... 
- luogu3706 [SDOI2017]硬币游戏
		LINK:硬币游戏 对于40分的暴力 构造出AC自动机 列出转移矩阵 暴力高消.右转上一篇文章. 对于100分 我们不难想到这个矩阵过大 且没有用的节点很多我们最后只要n个节点的答案 其他节点的答案可 ... 
- [bzoj4820][Sdoi2017]硬币游戏
		来自FallDream的博客,未经允许,请勿转载,谢谢. 周末同学们非常无聊,有人提议,咱们扔硬币玩吧,谁扔的硬币正面次数多谁胜利.大家纷纷觉得这个游戏非常符合同学们的特色,但只是扔硬币实在是太单调了 ... 
随机推荐
- 【SpringMVC笔记】第三课 处理器映射器+处理器适配器
			第二课的例子中,在springmvc.xml中配置使用了第一种处理器映射器和处理器适配器,如下所示. <!-- 配置第一种处理器映射器 BeanNameUrlHandlerMapping --& ... 
- poj3208 Apocalypse Someday 数位dp+二分 求第K(K <= 5*107)个有连续3个6的数。
			/** 题目:poj3208 Apocalypse Someday 链接:http://poj.org/problem?id=3208 题意:求第K(K <= 5*107)个有连续3个6的数. ... 
- java英文缩写
			JSR Java Specification Request Java规范请求 POJO Plain Old Java Object 简单的Java对象 
- asp.net mvc webconfig配置文件操作
			读取web.config数据,可以不用编译.如发布后,非常有用web.config文件<configuration> <appSettings> <add key=&qu ... 
- HTML5的表单所有type类型
			1.button:定义可点击的按钮(通常与 JavaScript 一起使用来启动脚本).<br /> <input id="" type="button ... 
- 阿里云ACE下的PHP开发环境搭建
			阿里云ACE下的PHP开发环境搭建 本系列文章由ex_net(张建波)编写.转载请注明出处. http://blog.csdn.net/ex_net/article/details/23999053 ... 
- <UIKit>关于剪贴板共享数据
			http://blog.sina.com.cn/s/blog_45e2b66c010102h9.html 上面这篇文章将剪贴板的使用方法基本上已经讲清楚了,参考这篇文章,再加上一个使用剪贴板共享数据 ... 
- 【MYSQL】导入中文后乱码问题
			http://fatkun.com/2011/05/mysql-alter-charset.html 
- JQuery 选择器 xpath 语法应用
			比如下面html代码 <ul> <li class="aaaa" title="ttt">li-1</li> <li ... 
- 基于FP-Growth算法的关联性分析——学习笔记
			数据挖掘 比之前的Ap快,因为只遍历两次. 降序 一.构建FP树 对频繁项集排序,以构成共用关系. 二.基于FP树的频繁项分析 看那个模式基出现过几次.频繁度. 看洗发液的 去掉频繁度小的 构建洗发液 ... 
 
			
		
