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 ...
随机推荐
- JS修改JSON中key的方法
function modifyJosnKey(json,oddkey,newkey){ var val=json[oddkey]; delete json[oddkey]; json[newkey]= ...
- ASP和PHP限制IP访问 只允许指定IP访问 允许*号通配符过滤IP
/** * 检测访问的ip是否为规定的允许的ip * Enter description here ... */ function check_ip(){ $ALLOWED_IP=array('192 ...
- OC - 8.Quartz2D核心要点
简介 作用 绘制 绘制图形 : 线条\三角形\矩形\圆\弧等 绘制文字 绘制\生成图片(图像) 读取\生成PDF 截图\裁剪图片 自定义UI控件(通常为内部结构较复杂的控件) UIKit中的绝大部分控 ...
- javaee学习-JSP指令简介
JSP指令(directive)是为JSP引擎而设计的,它们并不直接产生任何可见输出,而只是告诉引擎如何处理JSP页面中的其余部分. 在JSP 2.0规范中共定义了三个指令: page指令 Inclu ...
- Leaflet交流
GIS科研网 Leaflet交流 谢绝转载 http://www.3sbase.com欢迎加群交流 108299288 http://www.3sbase.com/3sbase/webgistest ...
- 原型模式(Prototype Pattern)
原型模型:用于创建重复对象,同时保证性能. 这种模式实现一个原型接口,用于创建对象的克隆,当直接创建对象的代价比较大,则可以采用这种模式.例如:一个对象需要高代价的数据库操作之后被创建,这时可以缓存该 ...
- C#基础(一)——C#中反斜杠/n与/r的区别
最近在公司实习的过程中,遇到了字符串换行的问题,百度了一下,发现字符串换行的问题还挺多,总结一下最基本的点,以防忘记. \n—>换行符(New Line),作用为换行符后面的字符串显示到“下一行 ...
- Leetcode 解题 Longest Substring without repeating charcater python
原题: Given a string, find the length of the longest substring without repeating character For example ...
- ARM编译器4字节对齐
(1)我们假设只有一个赋初值的char型全局变量,那么系统会在data区分配一个4字节的存储空间来存储它.实际上,只用了1个字节,但是为了4字节对齐,只好分配4个字节,所以就会有3个字节浪费. (2) ...
- linux vi 使用
vi 有一般模式和编辑模式 如vi test.txt 是首先进入的一般模式,一般模式下只能进行复制.删除.粘贴文件数据, 在一般模式下按i .I.a.A.o.O 都能进入编辑模式,按下不同的键进入编辑 ...