習題歸納 KMP,ACAM的也許不是一句話題解

2021-10-24 11:51:51 字數 1117 閱讀 4828

cf1200e compress words

直接將所有串的字尾自動機建出來,要找i和i+1的後字首公共部分時,就將i+1的所有字首打標記,用i來倍增找標記,標記可能要dfs序來維護,所以是兩個log,如果想尋求常數優化,可以試試樹剖.

[usaco15feb]******ing s

做kmp,記錄下每個位置匹配到t串的位置,用鍊錶來維護斷裂即可.

[poi2006]okr-periods of words

求完所有的nex陣列以後暴力找最小的border就行,記住找完之後要將最小border記下來,否則複雜度不對

[usaco15feb]******ing g

和s題差不多,在acam上記錄位置就可以了,用鍊錶來維護斷裂.

[tjoi2013]單詞

把s和t一起建acam,然後給s串對應的鏈+1,統計子樹和即可.

[usaco12jan]video game g      

將acam建出來後,在上面暴力dp即可.

[sdoi2014] 數數

把acam建出來,然後就是乙個三維dp,第一維表示在那個點,第二維表示是否壓著上界,第三維表示字首是否全為0

cf163e e-government

離線即可,每次詢問相當於多個點到根之和,這個可以轉化為子樹加,單點求值,dfs序求出來差分一下樹狀陣列就可以,刪除相當於子樹-1,新增相當於子樹+1.

cf1207g indie album

先把所有串插入,用線段樹合併來維護下標為i的出現了多少次,詢問就是直接去對應點看看下標為i的權值就可以,時間複雜度乙個log

當然如果你不想寫線段樹合併也可以,直接把詢問排序然後樹狀陣列來維護子樹和就可以了.

[poi2000]病毒

把acam建出來之後,若乙個點是病毒結尾,那麼子樹也是不合法的,將標記下傳之後,從根dfs不經過病毒結尾找環即可.

cf1202e you are given some strings...

我們先考慮對於t的每個字首,能使多少個串與其字首的字尾匹配,這個把acam建出來之後讓t上去跑,跑到乙個位置,這個點到根的標記總和就是當前答案.如果我們知道對於每個字尾,能使多少個串與這個字尾的字首匹配,那麼就可以把他們拼起來了.這個問題顯然可以把所有串都反過來,轉化為第一行的同問題.

一句話題解

由於有些題是在是不想寫就開個坑吧 老年選手的悲哀 題目鏈結 顯然所有f n,k 都是2 x,不如取對數變成加法 那麼我們有f n 0 i 1 42f n i,0 if n,0 sum f n i,0 i f n,0 i 142 f n i,0 i,這是乙個線性遞推 並且f n k f n 1,k f...

一句話歸納設計模式

通過 23種設計模式全面解析 教程,我們已經學習完了經典的 23 種設計模式。下面總結一下這 23 種設計模式,以方便小夥伴們日後複習和查閱。分類設計模式 簡述一句話歸納 目的生活案例 建立型設計模式 簡單來說就是用來建立物件的 工廠模式 factory pattern 不同條件下建立不同例項 產品...

noip2012 2018一句話題解

歷年noip普及 提高的一句話題解,大致是記錄思路,也會寫一寫心路歷程啥的 2012 普及組t1 簽到題,看了一眼發現我居然錯過兩次,注意一下給出的數字已經是兩個質數乘積,所以搜尋出其中乙個滿足的便可以結束,我是從小往大搜,除一下求出另乙個大的便可 t2 模擬,比較水的一道模擬,直接按照輸入模擬,注...