洛谷P2414 阿貍的打字機 [NOI2011] AC自動機
正解:AC自動機
解題報告:
傳送門!
這道題,首先想到暴力思路還是不難的,首先看到y有那麽多個,菜雞如我還不怎麽會可持久化之類的,那就直接排個序什麽的然後按順序做就好,這樣聽說有70pts
然後思考一下,正解怎麽做呢QAQ
回到AC自動機中關於fail指針的定義上來,因為fail指針指向的是最長後綴,這意味著,假如a指向b,那麽a字符串中一定包含有root到b這一段字符串
於是假如我們要統計的字符串x,就只需要統計有多少個fail指針直接或間接指向x的ed那個點就是as辣
那不就是,建一棵fail樹,求對於節點x的子樹中有多少個節點是屬於y的嘛
考慮到dfs序的性質,那不就是求兩個y之間有多少個節點嘛,這個就很好解決了鴨,就每次出現的時候+1回溯的時候-1就歐克了
然後如果當前節點是y,就說明當前相關的詢問都做完辣,就可以求值辣
聽說要樹狀數組維護一波?等下解釋QAQ
洛谷P2414 阿貍的打字機 [NOI2011] AC自動機
相關推薦
洛谷P2414 阿貍的打字機 [NOI2011] AC自動機
這一 聽說 就是 tar 只需要 ref get 思考 需要 正解:AC自動機 解題報告: 傳送門! 這道題,首先想到暴力思路還是不難的,首先看到y有那麽多個,菜雞如我還不怎麽會可持久化之類的,那就直接排個序什麽的然後按順序做就好,這樣聽說有70pts 然後思考一下
208.10.10【JSOI2007】【BZOJ1030】【洛谷P4052】文字生成器(AC自動機)(DP)
洛谷傳送門 解析: 為什麼endendend又是關鍵字啊啊啊啊!!! 思路: 不要試圖用容斥原理來做這道題。。。 這就是一個ACACAC自動機上的DPDPDP 首先建出ACACAC自動機,這時候我們
洛谷P4052 [JSOI2007]文本生成器 AC自動機+dp
display gis 那種 pre ide emp while sed printf 正解:AC自動機+dp 解題報告: 傳送門! 感覺AC自動機套dp的題還挺套路的,,, 一般就先跑遍AC自動機,然後就用dp dp的狀態一般都是f[i][j]:有i個字符,是a
BZOJ 2434 [Noi2011]阿貍的打字機(AC自動機)
樹狀 ont highlight true ++ 打印 const 查詢 我們 【題目鏈接】 http://www.lydsy.com/JudgeOnline/problem.php?id=2434 【題目大意】 給出一個打印的過程,‘a‘-‘z‘表示輸
NOI 2011 阿狸的打字機(AC自動機+主席樹)
題意 https://loj.ac/problem/2444 思路 多串匹配,考慮 \(\text{AC}\) 自動機。模擬打字的過程,先建出一棵 \(\text{Trie}\) 樹,把它變成自動機。對於每一個詢問 \((x,y)\) ,相當於求 \(y\) 在 \(\text{Trie}\) 上的父
洛谷 P3804 【模板】後綴自動機
ops rst ons sss har sizeof cstring n) oop 來一份模板 1 #include<cstdio> 2 #include<algorithm> 3 #include<cstring>
洛谷P4218 [CTSC2010]珠寶商(後綴自動機+點分治)
getc open ref details algorithm ostream const algo -i 傳送門 這題思路太清奇了……->題解 1 //minamoto 2 #include<iostream
洛谷3975 BZOJ3998 TJOI2015 弦論 字尾自動機
題目連結、 題意: 給你一個字串,問你在算重複/不算重複的情況下第k大的字串是什麼,不存在輸出-1。n<=5e5。 題解: 如果不算重複的話和這個題一樣。看連結裡的題解就行,我不再重複了。 那麼我們就講一下算重複的做法。算重複其實就是要通過right來計算相同的情況,計
【BZOJ】2434: [Noi2011]阿貍的打字機 AC自動機+樹狀數組+DFS序
log 字符串 html 有趣的 http .com dfs 個性 blog 【題意】阿貍喜歡收藏各種稀奇古怪的東西,最近他淘到一臺老式的打字機。打字機上只有28個按鍵,分別印有26個小寫英文字母和‘B‘、‘P‘兩個字母。 經阿貍研究發現,這個打字機是這樣工作的: l 輸入
BZOJ2434[Noi2011]阿貍的打字機——AC自動機+dfs序+樹狀數組
IE memset 換行 收藏 就是 namespace fail樹 src 輸入 題目描述 阿貍喜歡收藏各種稀奇古怪的東西,最近他淘到一臺老式的打字機。打字機上只有28個按鍵,分別印有26個小寫英文字母和‘B‘、‘P‘兩個字母。經阿貍研究發現,這個打字機是這樣工作
bzoj 2434 [Noi2011]阿貍的打字機——AC自動機
etc space get tchar oid pro http pan ini 題目:https://www.lydsy.com/JudgeOnline/problem.php?id=2434 dfs AC自動機,走過的點權值+1,回溯的時候權值-1;走到詢問的 y 串
「luogu2414」[NOI2011]阿貍的打字機
name clas 阿貍的打字機 trie == log names col queue 建出AC自動機,獲得fail樹,發現問題轉化成求以x為根的子樹中有多少個屬於y串的節點。 求出fail樹的dfs序,由dfs序的性質可知以x為根的子樹在dfs序上是連續的。 在trie
bzoj 2434 [NOI2011] 阿貍的打字機
lap head 處理 front second air make space www. 題面: https://www.lydsy.com/JudgeOnline/problem.php?id=2434 題解: 建立AC自動機 把fail樹拎出來,詢問(x,y)就
NOI 2011 阿貍的打字機 (AC自動機+dfs序+樹狀數組)
amp span 離線處理 oid 描述 can include nbsp 不能 題目大意:略(太長了不好描述) 良心LOJ傳送門 先對所有被打印的字符串建一顆Trie樹 觀察數據範圍,並不能每次打印都從頭到尾暴力建樹,而是每遍歷到一個字符就在Trie上插入這個字符,然後記
[NOI2011]阿貍的打字機
getc head getch 等於 個性 scan uil ios algorithm 首先,可以發現這樣一個性質 x在y中出現過=======y的某個前綴的後綴等於x。 先把AC自動機建出來後。 y的每一個前綴就是它在trie樹上所遍歷到的每一個點。 check這個點的
2434: [Noi2011]阿貍的打字機
str pac noi2011 樹狀數組 dex tchar amp 節點 sum 2434: [Noi2011]阿貍的打字機 https://lydsy.com/JudgeOnline/problem.php?id=2434 分析: AC自動機。 查詢x在
【[NOI2011]阿貍的打字機】
發現 swap num lin wap != lowbit def uil 首先發現這個插入的非常有特點,我們可以直接利用這個特殊的性質在\(Trie\)樹上模擬指針的進退 之後得到了\(Trie\)樹,先無腦建出\(AC\)機 之後考慮一下如何寫暴力 最簡單的暴力對於每一
AC自動機 NOI2011 阿狸的打字機
AC自動機上 根據fail指標 暴力跳有40分 所以我們可以考慮這麼做 對於x和y串 顯然若y上的每個節點可以通過fail跳到x的尾節點 那答案就是個數和 在y節點上打標記, 然後我們把fail指標反向
BZOJ2434 [NOI2011] 阿狸的打字機 【樹鏈剖分】【線段樹】【fail樹】【AC自動機】
題目分析: 畫一下fail樹,就會發現就是x的子樹中屬於y路徑的,把y剖分一下,用線段樹處理 $O(n*log^2 n)$。 程式碼: 1 #include<bits/stdc++.h> 2 using namespace std; 3 4 const int ma
Luogu2414 [NOI2011]阿貍的打字機
++ sta 深入理解 dfs bug 顯示 有一個 輸入 離開 題目藍鏈 Description 打字機上只有28個按鍵,分別印有26個小寫英文字母和B、P兩個字母。經阿貍研究發現,這個打字機是這樣工作的: 輸入小寫字母,打字機的一個凹槽中會加入這個字母(這個字母加在凹