初始有兩個根01,分別對應奇偶,長度為0/-1,0的fail是1
如果跳到了1號點,那麼新建的點的fail是0
種數=點數-1,某個串結尾的回文子串個數=fail鏈長度
擴充套件要考慮匹配以及邊界
洛谷5496
#include #define fo(a,b,c) for (a=b; a<=c; a++)
#define fd(a,b,c) for (a=b; a>=c; a--)
#define ll long long
//#define file
using namespace std;
int tr[500011][26],fa[500011],sum[500011],len[500011],n,i,j,k,l,ans,len;
char st[500001],ch;
int main()
l=tr[l][ch-'a'];
ans=sum[l],printf("%d ",ans);
ch=getchar(); }
fclose(stdin);
fclose(stdout);
return 0;
}
回文樹 模板
類似ac自動機,樹裡面每個節點代表主串的乙個回文子串,且每個回文子串都不同 主要功能 1.求串s字首0 i內本質不同回文串的個數 兩個串長度不同或者長度相同且至少有乙個字元不同便是本質不同 2.求串s內每乙個本質不同回文串出現的次數 3.求串s內回文串的個數 4.求以下標i結尾的回文串的個數 con...
回文樹總結
寫馬拉車還不如寫回文樹。by 陳菊開 原 請轉2017年集訓隊 回文樹及其應用 by翁文濤 我感覺回文樹 回文自動機相較於字尾自動機還是要好理解一點的 像我這種菜雞到現在還不是很懂sam 回文樹,顧名思義,就是要把乙個串的所有回文子串丟到一棵樹上。那要向sam一樣記錄個什麼鬼 endpos 啥的嗎?...
回文樹總結
首先,回文自動機就是回文樹。不愧是 texttt 在 csp 模擬賽裡面考 pam 然後全場就我切了 求乙個由小寫字母 a z 構成的串的本質不同的回文子串數量。首先考慮把每乙個子串列舉出來,然後判斷是不是回文串再把它 hash 進 map 或者是 hash table 裡面。複雜度 theta n...