bzoj1444 有趣的遊戲(AC自動機+概率dp)
題意:
給定n個長度為l的模式串,現在要用前m個大寫字母生成一個隨機串,每個字符有自己的出現幾率,第一次出現的字符串獲勝,求最終每個字符串的獲勝幾率。
分析:
容易想到先把所有的字符串建成一個AC自動機
然後對於生成的隨機串就相當於從AC自動機的root開始在自動機上走,然後求走到每個單詞節點的概率
因為這是存在環的,不是DAG圖,所以不能直接DP
考慮構造出剛開始的轉移矩陣,然後對轉移矩陣作矩陣乘法不斷叠代就能得到正確答案了
轉移矩陣如何建呢?
1)a[i][ch[i][j]]+=p[j] (普通的轉移,註意一定要累加,不能直接賦值)
2)若某個節點是danger節點,那麽根據題意,它是說明已經提前走完了一個字符串,不能再走離這個位置,所以對於這種節點,只能a[i][i]=1.0,其他不要
時間復雜度O(K*(nm)^3)
bzoj1444 有趣的遊戲(AC自動機+概率dp)
相關推薦
bzoj1444 有趣的遊戲(AC自動機+概率dp)
大寫字母 叠代 字符串 字符 時間復雜度 單詞 分析 出現 ron 題意: 給定n個長度為l的模式串,現在要用前m個大寫字母生成一個隨機串,每個字符有自己的出現幾率,第一次出現的字符串獲勝,求最終每個字符串的獲勝幾率。 分析: 容易想到先把所有的字符串建成一個AC自動
11468 Substring (AC自動機 + 概率dp)
#include <cstdio> #include <cstring> #include <algorithm> #include <string> #include <iostream> #include <vector> #incl
【HDOJ3341】Lost's revenge(AC自動機,DP)
res n) trie hdoj 字母 div 其中 func color 題意:給出一個n個模式串,一個目標串,問把目標串重新排位最多能產生多少個模式串,可以重疊且所有串只包含A C G T。 n<=10,len[i]<=10 len(s)<=40 C
【BZOJ1444】[Jsoi2009]有趣的遊戲 AC自動機+概率DP+矩陣乘法
pri 註意 script aaaaa mil size borde tput char 【BZOJ1444】[Jsoi2009]有趣的遊戲 Description Input 註意 是0<=P Output Sample
隨機生成的S不包含任何一個串的概率 AC自動機+概率DP UVA 11468 Substring
題意:給出一些字元和各自對應的選擇概率,隨機選擇L次後將得到一個長度為L的隨機字串S.給出K個模版串,計算S不包含任何一個串的概率 分析:構造AC自動機之後,沒隨機生成一個字母,相當於在AC自動機中隨機走一步.所有單詞結點標記為"禁止",則本題就是求從結點0開始走L
HDU 2222 Keywords Search(AC自動機模板題)
stack uil empty cst keywords cto ble ont max http://acm.hdu.edu.cn/showproblem.php?pid=2222 題意:給出多個單詞,最後再給出一個模式串,求在該模式串中包含了多少個單詞。 思路
病毒侵襲 HDU - 2896(ac自動機 板題)
ffffff sync lap bre == 信息 bbb 冒號 nbsp 當太陽的光輝逐漸被月亮遮蔽,世界失去了光明,大地迎來最黑暗的時刻。。。。在這樣的時刻,人們卻異常興奮——我們能在有生之年看到500年一遇的世界奇觀,那是多麽幸福的事兒啊~~ 但網路上總有那麽些網站,
NYOJ832 合並遊戲(簡單狀壓DP)
tdi 分享 define 遊戲 har set pri max temp AC代碼: #include<stdio.h> #include<string.h> #define max(a,b) (((a)>(b))?(a):(b
HDU-3695 Computer Virus on Planet Pandora(ac自動機模板題)
Aliens on planet Pandora also write computer programs like us. Their programs only consist of capital letters (‘A’ to ‘Z’) which th
poj1204(AC自動機,模板)
題意:給個L*C的字串矩陣,W個詢問,對每個詢問輸出這個串第一次出現的位置及方向,共有8個方向,用A~H表示 思路:其實就是普通的AC自動機,但由於有八個方向,所以要把各種方向的可能性都給試一遍。注意,由於要記錄開始字串,所以在構造tire樹的時候就應該把那些字串倒過來構造
HDU2222(AC自動機模板題)
咳咳~ 因為暫時看不懂,所以先儲存個模板題吧。 Keywords Search Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) Total
2017多校賽 1002 Rikka with String(AC自動機+狀壓)
這個題目和之前做的一道題目很像:類似的題目 對於題目要求列舉到2L長度的串,由於01串本身的性質我們只用列舉到L就行了,那一半是對稱的。在列舉這一半時是可以隨便列舉的,因為這一般確定了,那麼另一半也確定了,這樣2L的串一定是個01串。 然後對於輸入的n個串做
HDU 5069 Harry And Biological Teacher(AC自動機+線段樹)
題意 給定 \(n\) 個字串,\(m\) 個詢問,每次詢問 \(a\) 字串的字尾和 \(b\) 字串的字首最多能匹配多長。 \(1\leq n,m \leq 10^5\) 思路 多串匹配,考慮 \(\text{AC}\)自動機,對 \(n\) 個串建自動機,觀察這個結構,不難發現 \(Trie\)
NOI 2011 阿狸的打字機(AC自動機+主席樹)
題意 https://loj.ac/problem/2444 思路 多串匹配,考慮 \(\text{AC}\) 自動機。模擬打字的過程,先建出一棵 \(\text{Trie}\) 樹,把它變成自動機。對於每一個詢問 \((x,y)\) ,相當於求 \(y\) 在 \(\text{Trie}\) 上的父
poj 1322 Chocolate (生成函式||概率DP)
題目描述 傳送門 題目大意:一個口袋中裝有巧克力,巧克力的顏色有c種。現從口袋中取出一個巧克力,若取出的 巧克力與桌上已有巧克力顏色相同,則將兩個巧克力都取走,否則將取出的巧克力放在桌上。 設從口袋中取出每種顏色的巧克力的概率均等。求取出 n 個巧克力後
hdu 4035 Maze (樹上的概率dp)
When wake up, lxhgww find himself in a huge maze. The maze consisted by N rooms and tunnels connecting these rooms. Each pair of rooms is connected by one
POJ 3744 Scout YYF I (矩陣相乘+概率DP)
題面: Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 7254 Accepted: 2118 Description YYF is a couragous scout. Now he i
SCU 4519 來個簽到吧 (exgcd推廣+概率dp)
題目傳送門:http://acm.scu.edu.cn/soj/problem.action?id=4519 這題開頭給你一些球,然後把任意球的編號之差|x−y|的求加入進去,然後加滿球之後,問你把所有球都取出來過一遍的期望是多少 前面加球,任意兩個球x,y
POJ 1625 Censored!(AC自動機+高精度+dp)
數組實現 ons 不包含 mat queue sta uil style 矩陣 http://poj.org/problem?id=1625 題意: 給出一些單詞,求長度為m的串不包含這些單詞的個數。 思路: 這道題和HDU 2243和POJ 2778是一樣的
HDU 2296 Ring (AC自動機+DP)
ech when more uil 返回 size 並且 printf 枚舉 Ring Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Subm