题面

板板的生成函数做法太神仙了,我跑了

朴素的做法是建立AC自动机变成图上的随机游走问题

来仔细考虑一下转移,把状态分成非结尾状态和结尾状态。在一个非结尾状态后补一个串是一定能到达目标串的,但是如果中间出现了前缀等于后缀的情况也可能直接转移到另一个结尾状态。那么我们就用KMP把串之间两两的前缀=后缀的情况状态统计起来列方程,设$x_i$表示$i$胜利的概率,$p[i][j]$表示第$i$个串第一个出现之后又接了一个后缀转移到第$j$个串的概率

那么对于每个$i$有$x_i+\sum\limits_{j=1}^np[i][j]x_j=\frac{1}{2^m}$,后面那个就是正好拼出来的概率

我们发现好像少了点什么东西,方程并不能够解出来,所以挖掘一下没用到的条件:$\sum\limits_{i=1}^nx_i=1$,然后就行了

 #include<cmath>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define double long double
using namespace std;
const int N=;
const double eps=1e-;
double pw[N],equ[N][N];
int n,m,nxt[N][N]; char str[N][N];
double Calc(int a,int b)
{
double ret=; int o=;
for(int i=;i<m;o+=str[b][i]==str[a][o],i++)
while(o&&str[b][i]!=str[a][o]) o=nxt[a][o];
if(a==b) o=nxt[a][o];
while(o) ret+=pw[m-o],o=nxt[a][o];
return ret;
}
void Guass()
{
for(int i=;i<=n;i++)
{
int tmp=i;
for(int j=i+;j<=n;j++)
if(fabs(equ[j][i])>fabs(equ[tmp][i])) tmp=j;
for(int j=i;j<=n+;j++)
swap(equ[i][j],equ[tmp][j]);
for(int j=;j<=n;j++)
if(i!=j)
{
double tep=equ[j][i]/equ[i][i];
for(int k=i;k<=n+;k++)
equ[j][k]-=tep*equ[i][k];
}
}
for(int i=;i<=n;i++) equ[i][n+]/=equ[i][i],equ[i][i]=;
}
int main()
{
scanf("%d%d",&n,&m);
for(int i=;i<=n;i++)
{
scanf("%s",str[i]);
for(int j=,o=;j<m;j++)
{
while(o&&str[i][o]!=str[i][j]) o=nxt[i][o];
nxt[i][j+]=(str[i][o]==str[i][j])?++o:;
}
}
pw[]=;
for(int i=;i<=;i++) pw[i]=pw[i-]*0.5;
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
equ[i][j]=Calc(i,j);
for(int i=;i<=n;i++)
equ[i][n+]=-pw[m],equ[i][i]+=;
for(int i=;i<=n;i++) equ[n+][i]=;
// for(int i=1;i<=n;puts(""),i++)
// for(int j=1;j<=n+1;j++) printf("%.2Lf ",equ[i][j])
n++,equ[n][n+]=,Guass();
for(int i=;i<n;i++) printf("%.10Lf\n",equ[i][n+]);
return ;
}

解题:SDOI 2017 硬币游戏的更多相关文章

  1. 【BZOJ】2017: [Usaco2009 Nov]硬币游戏(dp+神题+博弈论)

    http://www.lydsy.com/JudgeOnline/problem.php?id=2017 这题太神了,我想了一个中午啊 原来是看错题一直没理解题解说的,一直以为题解是错的QAQ “开始 ...

  2. SDOI 2017 Round1 解题报告

    Day 1 T1 数字表格 题目大意 · 求\(\prod\limits_{i=1}^n\prod\limits_{j=1}^mFibonacci(\gcd(i,j))\),\(T\leq1000\) ...

  3. bzoj 2017 [Usaco2009 Nov]硬币游戏 动态规划

    [Usaco2009 Nov]硬币游戏 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 431  Solved: 240[Submit][Status] ...

  4. 【题解】Luogu p2964 BZOJ 2017[Usaco2009 Nov]硬币游戏

    题目描述 Farmer John's cows like to play coin games so FJ has invented with a new two-player coin game c ...

  5. TYVJ P1075 硬币游戏 Label:dp

    背景 农民John的牛喜欢玩硬币,所以John就为它们发明了一个新的两人硬币游戏,叫做Xoinc. 描述 最初地面上有一堆n个硬币(5<=n<=2000),从上面数第i个硬币的价值为C_i ...

  6. tyvj P1075 - 硬币游戏 博弈DP

    P1075 - 硬币游戏 From price    Normal (OI)总时限:10s    内存限制:128MB    代码长度限制:64KB 背景 Background 农民John的牛喜欢玩 ...

  7. 1289 大鱼吃小鱼 1305 Pairwise Sum and Divide 1344 走格子 1347 旋转字符串 1381 硬币游戏

    1289 大鱼吃小鱼 有N条鱼每条鱼的位置及大小均不同,他们沿着X轴游动,有的向左,有的向右.游动的速度是一样的,两条鱼相遇大鱼会吃掉小鱼.从左到右给出每条鱼的大小和游动的方向(0表示向左,1表示向右 ...

  8. 腾讯WeTest《2017中国移动游戏质量白皮书》开放预约,再为国内手游把把脉

    产品为王,质量先行.如果说2016年是爆款手游相继崛起的一年,那么2017年则更像是打磨精品.建立生态的高手切磋之年.守住一个游戏的质量生命线,方能建立健康生态,方能在如火如荼的行业竞争中角逐到最后. ...

  9. 腾讯WeTest发布《2017中国移动游戏质量白皮书》,专注手游品质提升

    1月8日,腾讯质量开放平台WeTest正式发布<2017中国移动游戏质量白皮书>. 刚刚过去的这一年,市场逐渐成熟,中国移动互联网由增量市场转向存量市场.中国移动游戏市场急剧变化,真正的精 ...

随机推荐

  1. 20155313 杨瀚 《网络对抗技术》实验八 Web基础

    20155313 杨瀚 <网络对抗技术>实验八 Web基础 一.实验目的 1.Web前端HTML 能正常安装.启停Apache.理解HTML,理解表单,理解GET与POST方法,编写一个含 ...

  2. EZ 2018 05 13 NOIP2018 模拟赛(十三)

    这次的比赛真心水,考时估分240,然后各种悠闲乱逛 然后测完T1数组开小了炸成40,T2,T3都没开long long,T2炸成20,T3爆0 掉回1600+的深渊,但是还有CJJ dalao比我更惨 ...

  3. 页面弹出全屏浮层或遮罩时,禁止底层body滚动

    · 解决方法 针对弹出的浮层的 touchmove事件,添加阻止浏览器默认行为. $('.mask-wrapper').on('touchmove', function (event) { // 监听 ...

  4. 本地mysql快速迁移到服务器数据库中

    我们可以使用linux的scp命令(scp无法在windows使用),加上mysql自带的mysqldump,能很快的完成数据库的迁移 将本地的数据库(music_db)导出为sql文件(music_ ...

  5. vue基础项目安装教程

    安装node.js 从node.js官网下载并安装node,安装过程很简单,一路“下一步”就可以了. 安装完成之后,打开命令行工具,输入 node -v,如下图,如果出现相应的版本号,则说明安装成功. ...

  6. SpringBoot日记——信息修改PUT篇

    我们常用的功能,除了post和get,还有put和delete,这篇文章就介绍一下这个put的基本用法. 页面跳转和回显 1. 首先,我们之前的页面已经将添加和修改的按钮都做好了,那么如何实现这些按钮 ...

  7. PAT甲题题解-1055. The World's Richest (25)-终于遇见一个排序的不水题

    题目简单,但解题的思路需要转换一下,按常规思路肯定超时,推荐~ 题意:给出n个人的姓名.年龄和拥有的钱,然后进行k次查询,输出年龄在[amin,amx]内的前m个最富有的人的信息.如果财富值相同就就先 ...

  8. extjs几个奇怪的错误

    在用Extjs进行网页开发的时候,遇见了一下两个错误,这两个错误的位置用firebug调试显示在extjs-all.js Ext.resetElement is undefined g.el is n ...

  9. WC----命令行实现对文件信息的统计

    需求分析: 程序处理用户需求的模式为: wc.exe [parameter][filename] 在[parameter]中,用户通过输入参数与程序交互,需实现的功能如下: 1.基本功能 支持 -c ...

  10. ElasticSearch 2 (16) - 深入搜索系列之近似度匹配

    ElasticSearch 2 (16) - 深入搜索系列之近似度匹配 摘要 标准的全文搜索使用TF/IDF处理文档.文档里的每个字段或一袋子词.match 查询可以告诉我们哪个袋子里面包含我们搜索的 ...