回文樹總結

2022-05-07 19:12:10 字數 968 閱讀 4447

首先,回文自動機就是回文樹。

不愧是\(\texttt\),在\(csp\)模擬賽裡面考\(pam\)

(然後全場就我切了)

求乙個由小寫字母'a'-'z'構成的串的本質不同的回文子串數量。

首先考慮把每乙個子串列舉出來,然後判斷是不是回文串再把它\(hash\)進\(map\)或者是\(hash-table\)裡面。複雜度\(\theta(n^3)\)

想一想判斷是不是回文串可以通過正反兩遍\(hash\)得到。複雜度\(\theta(n^2)\)。

考慮manacher的過程是不是可以求出所有的回文串,預處理\(hash\)值然後用\(map\)或者\(hash-table\)可以做到\(\theta(n)\)或\(\theta(nlogn)\)

這就是我們要說的演算法——回文自動機。

形態

我們很容易知道,回文串有兩種,一種長度是奇數,一種長度是偶數

而在回文樹上走,我們肯定不是一次只在後面新增乙個字元

顯然是在前後各新增乙個字元

所以我們不難得出一點,如果串可以變成另外乙個回文串

那麼它的長度一定加上了乙個偶數

所以在回文樹上,為了區分這兩種不同的回文串

所以回文樹相當於乙個森林

有兩棵樹,一棵的代表長度為奇數的回文串,另一棵代表長度為偶數的回文串

構造
構造的話考慮增量構造。

加入乙個位置\(r\),然後找最長回文字尾即可。

考慮乙個點不斷從自己的祖宗轉移即可。

int tot=1,last;

char s[n];

struct nodet[n<<1];

void extend(int c,int n)

last=t[p].son[c];

}

題解戳這裡

題解戳這裡

回文樹總結

寫馬拉車還不如寫回文樹。by 陳菊開 原 請轉2017年集訓隊 回文樹及其應用 by翁文濤 我感覺回文樹 回文自動機相較於字尾自動機還是要好理解一點的 像我這種菜雞到現在還不是很懂sam 回文樹,顧名思義,就是要把乙個串的所有回文子串丟到一棵樹上。那要向sam一樣記錄個什麼鬼 endpos 啥的嗎?...

回文樹(自動機) 練習和總結

回文樹是一種強大的回文字串處理演算法,他的構造過程實際上和kmp多少有些相似,這裡講的很是仔細。下面摘錄幾個例題。ural 1960 palindromes and super abilities 每次加乙個新節點,說明了有乙個新的回文串產生。這個感覺真的很重要啊 我們在自動機裡記錄一下就好 ura...

回文樹 模板

類似ac自動機,樹裡面每個節點代表主串的乙個回文子串,且每個回文子串都不同 主要功能 1.求串s字首0 i內本質不同回文串的個數 兩個串長度不同或者長度相同且至少有乙個字元不同便是本質不同 2.求串s內每乙個本質不同回文串出現的次數 3.求串s內回文串的個數 4.求以下標i結尾的回文串的個數 con...