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 ...
随机推荐
- 配置git DiffMerge工具
git的命令行貌似没有特别好用的UI工具,不管是Android Studio自带的还是其他的,完全代替命令行好像做不到.再加上对git来说没什么比diff和merge更正常不过的事情了.那就配置命令行 ...
- 解决Android Studio启动速度慢的问题。避免每次启动Android Studio都要fetching Android sdk compoment information。
Android Studio每次启动都要去fetching sdk,由于Android sdk 官网在大陆连不上,所以每次启动时界面都会停在那里很久. 解决办法就是设置取消每次fetching sdk ...
- IP-MAC绑定导致网络故障
前段时间将一台服务器A的服务迁移至了另外一台服务器B,外网IP地址也顺带迁移过来了,结果网络出现了问题. 其中内网是畅通的,但是外网IP怎么都连不上另外一台路由C(B和C是在一个交换机下的,网段也相同 ...
- Core Data(数据持久化)
Core Data可能是OS X和iOS中最容易被误解的框架之一了.为了帮助大家理解,我们将快速研究Core Data,来看一下它是关于什么的.为了正确使用Core Data, 有必要理解其概念.几乎 ...
- 记录一次mount问题
linux centos 6.5 _64 oracle 11.2g 今天接到一个客户电话说重启了服务器,数据库没有重启来,看了数据库的报错 没有找到control文件的路径,数据库启动到了 unmo ...
- docker 挂在本地目录
docker run -i -t -v /home/:/opt/data jenkins /bin/bash 运行jenkins,把本地中的/home/ 挂载到虚拟机中的/opt/data/ ...
- nginx方面的书籍资料链接
http://tengine.taobao.org/book/ http://blog.sina.com.cn/s/articlelist_1929617884_0_1.html http://blo ...
- yii2源码学习笔记(十七)
Theme 类,应用的主题,通过替换路径实现主题的应用,方法为获取根路径和根链接:yii2\base\Theme.php <?php /** * @link http://www.yiifram ...
- (转载)EhLib 在 Delphi 7 下的安装方法
EhLib 在 Delphi 7 下的安装方法 1.将 EhLib 解压到一个目录,如:E:\VCL\EhLib: 2.将 EhLib 安装目录下 Common 目录.DataService 目录下的 ...
- What is Windows Clustering
A cluster is a group of independent computer systems, referred to as nodes, working together as a un ...