time limit: 10 sec memory limit: 64 mb
submit: 1007 solved: 334
[submit][status][discuss]
注意 是0<=p
【題解】
ac自動機+矩陣乘法
首先把模式串建成ac自動機,構建出轉移矩陣。
構造方法:a[i][j]表示從第i個結點轉移到第j個結點的概率,則如果j被標記過,f[i][j]=1,否則f[i][j]=possble[ch[j]]
具體見**:
1 #include2 #include3 #include4 #include5 #include6 #include7 #include8using
namespace
std;
9#define maxn 510
10struct node}a;
11int n,l,m,cnt,id,fail[maxn],end[maxn],pos[maxn],q[maxn],tr[maxn][27
];12
double
chty[maxn];
13char
ch[maxn];
14 inline int
read()
1518
while(isdigit(ch))
19return x*f;20}
21void
insert()
2229 end[now]=1; pos[++id]=now;30}
31void
build()
3242}43
}44}45
void
get()
4652
}53 inline node operator *(node &x,node &y)
5462
intmain()
6369
build();
70get
();71
for(int i=1;i<=50;i++) a=a*a;
72for(int i=1;i<=n;i++) printf("
%.2lf\n
",(double)a.p[0
][pos[i]]);
73return0;
74 }
bzoj1444 Jsoi2009 有趣的遊戲
這個題是一道ac自動機上的概率dp,可以幫助理解一下ac自動機的結構。首先我們把所有的串插入trie,建立ac自動機,求一下轉移函式 相當於構造乙個trie圖 那麼就可以概率dp了。首先到達每個點的概率為變數,然後我們要求的就是到達接受狀態 也就是每個串的結尾對應的狀態 的概率。注意到了接受狀態就不...
小店購物 JSOI2008 BZOJ 2260
grant是乙個個體戶老闆,他經營的小店因為其豐富的優惠方案深受附近居民的青睞,生意紅火。小店的優惠方案十分簡單有趣。grant規定 在一次消費過程中,如果您在本店購買了精製油的話,您購買香皂時就可以享受2.00元 塊的 如果您在本店購買了香皂的話,您購買可樂時就可以享受1.50元 聽的 諸如此類的...
BZOJ 4327 JSOI2012 玄武密碼
字尾自動機裸題。藉著這道裸題總結一下字尾自動機的查詢問題。1.查字首 查詢時不跳parent,遇到空節點就跳出。2.查子串 查詢時跳parent,記錄最大ans.3.查次數 lct維護right陣列 4.查不同的串的數目 在建樹時維護,乙個點對答案的貢獻為this max len this pare...