将所有字符串建一个ac自动机,用f[i]表示随机字符串匹配到第i个字符的概率,可以转移到某些字符,如果这个点是末尾那么他只能转移到自己且概率为1,高斯消元即可(另外还有一个有趣的做法,因为精度要求不高,可以直接对这个矩阵自乘50次得到的就是结果) 1 #include<bits/stdc++.h> ...
分类:
其他好文 时间:
2019-10-26 13:23:31
阅读次数:
105
【BZOJ1444】[Jsoi2009]有趣的游戏 Description Input 注意 是0<=P 注意 是0<=P Output Sample Input Sample Output HINT 30%的数据保证, n ≤ 2. 50%的数据保证, n ≤ 5. 100%的数据保证, n , ...
分类:
Web程序 时间:
2017-06-20 17:54:36
阅读次数:
204
题意: 给定n个长度为l的模式串,现在要用前m个大写字母生成一个随机串,每个字符有自己的出现几率,第一次出现的字符串获胜,求最终每个字符串的获胜几率。 分析: 容易想到先把所有的字符串建成一个AC自动机 然后对于生成的随机串就相当于从AC自动机的root开始在自动机上走,然后求走到每个单词节点的概率 ...
分类:
其他好文 时间:
2017-06-15 10:44:42
阅读次数:
156
建立AC自动机,并求出转移矩阵。再用$\sum E(终止节点)=1$去替换第一个方程,高斯消元即可。时间复杂度$O(n^3l^3)$。注意精度问题,要特判0.00的情况。#include#include#include#define N 110using namespace std;int n,l,...
分类:
Web程序 时间:
2015-11-23 06:14:54
阅读次数:
138
题目大意:给定n个长度为l的模式串,现在要用前m个大写字母生成一个随机串,每个字符有自己的出现几率,第一次出现的字符串获胜,求最终每个字符串的获胜几率
建出AC自动机,搞出转移矩阵
如果某个节点是模式串那么这个节点只向自己连一条概率为1的出边
然后把转移矩阵自乘50遍即可
#include
#include
#include
#include
#define M 120
using...
分类:
Web程序 时间:
2015-02-04 14:43:03
阅读次数:
196