bzoj1444 Jsoi2009 有趣的遊戲

2022-05-31 04:30:12 字數 1215 閱讀 3336

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 #include8

using

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...