bzoj1444
显然自动机上高斯消元
根据AC自动机上的转移可以列出一系列方程
但这个样的方程解出来全0是一组解
说明有线性组合的情况
考虑除非没人能赢,否则每个人赢的概率和为1
那么我们只要把原来的第一个方程换成这个即可
var ans,d:array[..] of double;
a:array[..,..] of double;
w,q,f:array[..] of longint;
trie:array[..,..] of longint;
v:array[..] of boolean;
j,k,i,n,m,l,x,y,t:longint;
s:string; procedure swap(var a,b:double);
var c:double;
begin
c:=a;
a:=b;
b:=c;
end; procedure ac;
var h,r,x,y,i:longint;
begin
h:=;
r:=;
for i:= to m do
if trie[,i]> then
begin
inc(r);
q[r]:=trie[,i];
end; while h<=r do
begin
x:=q[h];
for i:= to m do
if trie[x,i]> then
begin
y:=trie[x,i];
inc(r);
q[r]:=y;
j:=f[x];
while (j>) and (trie[j,i]=) do j:=f[j];
f[y]:=trie[j,i];
end;
inc(h);
end;
end; procedure gauss;
var i,j,k,p,u:longint;
c:double;
begin
u:=;
for i:= to t do
begin
p:=u;
for j:=u+ to t do
if abs(a[j,i])>abs(a[p,i]) then p:=j; if (p=u) and (a[p,i]=) then continue;
if p<>u then
begin
for j:= to t+ do
swap(a[u,j],a[p,j]);
end;
for j:=u+ to t do
if a[j,i]<> then
begin
c:=a[j,i]/a[u,i];
for k:= to t+ do
a[j,k]:=a[j,k]-a[u,k]*c;
end;
inc(u);
end;
for i:=t downto do
begin
if a[i,i]= then continue;
for j:=i+ to t do
a[i,t+]:=a[i,t+]-ans[j]*a[i,j];
ans[i]:=a[i,t+]/a[i,i];
end;
end; begin
readln(n,l,m);
for i:= to m do
begin
readln(x,y);
d[i]:=x/y;
end;
for i:= to n do
begin
readln(s);
j:=;
for k:= to l do
begin
x:=ord(s[k])-;
if trie[j,x]= then
begin
inc(t);
trie[j,x]:=t;
end;
j:=trie[j,x];
end;
w[i]:=j;
v[j]:=true;
end;
ac;
for i:= to t do
begin
a[i,i]:=-;
if not v[i] then
begin
for k:= to m do
begin
j:=i;
while (j>) and (trie[j,k]=) do j:=f[j];
a[trie[j,k],i]:=a[trie[j,k],i]+d[k];
end;
end;
end;
for i:= to t do
if not v[i] then a[,i]:= else a[,i]:=;
a[,t+]:=;
gauss;
for i:= to n do
if (ans[w[i]]>) and (ans[w[i]]<=) then
writeln(ans[w[i]]::)
else writeln('0.00');
end.
bzoj1444的更多相关文章
- 【BZOJ1444】[JSOI2009]有趣的游戏(高斯消元,AC自动机)
[BZOJ1444][JSOI2009]有趣的游戏(高斯消元,AC自动机) 题面 BZOJ 题解 先把\(AC\)自动机构建出来,最好构成\(Trie\)图.然后这样子显然是在一个有向图中有一堆概率的 ...
- [BZOJ1444]有趣的游戏(AC自动机+矩阵乘法)
n个等长字符串,机器会随机输出一个字符串(每个字母出现的概率为p[i]),问每个字符串第一个出现的概率是多少. 显然建出AC自动机,套路地f[i][j]表示i时刻位于节点j的概率. 构建转移矩阵,当i ...
- 【BZOJ1444】[Jsoi2009]有趣的游戏 AC自动机+概率DP+矩阵乘法
[BZOJ1444][Jsoi2009]有趣的游戏 Description Input 注意 是0<=P Output Sample Input Sample Output HINT 30%的 ...
- [日常摸鱼]bzoj1444 [JSOI2009]有趣的游戏——AC自动机+矩阵
今天学校跳蚤市场摆摊聚众吸毒打call,东西卖了一百多好开心_(:з」∠)_ (然后大家中午就去吃了一顿好的x) 下午听演讲然后现在来填坑orz(其实是昨晚的坑) 题目:bzoj1444 先用字符串构 ...
- BZOJ1444 : [Jsoi2009]有趣的游戏
建立AC自动机,并求出转移矩阵. 再用$\sum E(终止节点)=1$去替换第一个方程,高斯消元即可. 时间复杂度$O(n^3l^3)$. 注意精度问题,要特判0.00的情况. #include< ...
- bzoj1444[Jsoi2009]有趣的游戏[AC自动机]
题面 bzoj 我要向师父学习善待每一只数据结构 考虑成环,那么高斯消元 然鹅这道题太小了 所以直接转移矩阵自乘就好啦 终点不向外连边 有一条向自己的,概率为一的自环来作为结尾 对于其他店 若有边\( ...
- BZOJ1444[Jsoi2009]有趣的游戏——AC自动机+概率DP+矩阵乘法
题目描述 输入 注意 是0<=P, n , l, m≤ 10. 输出 样例输入 input 1 3 2 2 1 2 1 2 AB BA AA input 2 3 4 2 1 2 1 2 AABA ...
- BZOJ1444:[JSOI2009]有趣的游戏(AC自动机,矩阵乘法)
Description Input 注意 是0<=P, n , l, m≤ 10. Output Sample Input input 1 3 2 2 1 2 1 2 AB BA AA inpu ...
- 【bzoj1444】[Jsoi2009]有趣的游戏
1444: [Jsoi2009]有趣的游戏 Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 1007 Solved: 334[Submit][Statu ...
随机推荐
- JavaScript高级程序设计(一):JavaScript简介
一.JavaScript实现 1.一个完整的JavaScript包含三个部分组成: 1)ECMAScript 核心 2)DOM文档对象模型 3)BOM浏览器对象模型 2.文档对象模型(DOM) 文档对 ...
- javascript 函数学习
1.自以为好的部分,更多访问: http://www.runoob.com/js/js-tutorial.html 2.this 3.new 4.闭包 5.自执行
- Dao模型设计(基于Dao与Hebernate框架)
以前没有Dao设计模型之前,一般都是这样的流程: ①先设计实体对象 学生对象: package com.itheima.domain; import java.io.Serializable; imp ...
- 国庆第七日(2014年10月7日17:55:56),随手记,一些关注的OSC软件,花生壳
(1)最难过的是今天. (2)随手记:001.002. (3)htmlunit.joda-time.date4j.jdao.BeanGenerator.JavaScript秘密花园(开源图书) OS ...
- IOS 学习日志 2015-3-17
Objective--C 一 关键字 @class 导入已有的类 id 对象类型 表示任何一个ObjC对象类型 Block 对象类型 OC中称为代码块 类似于C中的函数式指针 typedef 定义数据 ...
- JavaWeb网上商城的反思
不知道从什么时候起,我爱上了写博客,对之前学得的只是进行反思.写了几天课程设计,代码量量8.9千左右. 然后下面文字是我在博客上复制过来的,说得很详细 MVC(Model View Controlle ...
- leetcode problem 31 -- Next Permutation
Implement next permutation, which rearranges numbers into the lexicographically next greater permuta ...
- 【原创】解决国内Android SDK无法更新问题更新
使用代理,推荐使用shadowsock 在SDK Manage的tools-options填好代理 服务器地址127.0.0.1 端口1080
- MVC中Razor视图基本语法(1)
Razor前面,必须要跟前面的有空隙,即空格(多谢一楼提醒,url里面确实不用空格,如果要在url里面只需要@(ViewBag.),加上括号就好了),之后的必须要连贯,否则加小括号 1,在页面中输出单 ...
- 如何查看MySQL中每张表占用的空间大小
如题,找到MySQL中的information_schema表,这张表记录了所有数据库中表的信息,主要字段含义如下: TABLE_SCHEMA : 数据库名 TABLE_NAME:表名 ENGINE: ...