聽說,這個演算法能將一些難處理的字串題目變成裸題,菜菜學學!沒想到18南京網路賽碰到了,居然想不起來了,可惡!
計蒜客 30998題目: 問字串(『0』~』9』)裡面不同本質的數字字串代表的數字之和模(1e9+7).
回文樹裸題,設定en[i]陣列,來記錄節點代表回文串的末尾在字串中的id,代表的數字取模我們可以用字首和來實現: 444123321 中123321的值:
sum
[444123321]−
sum[
444]∗10
6;即將
123321全變為0s
um
[444123321]−
sum[
444]∗10
6;即將
123321全變
為0
#include
#define llt long long
using namespace std;
const int maxn = 2e6+77;
const int n = 10;
const int
mod = 1e9+7;
struct pt
void init()
int find_fail(int x)
void add(int a)
last = nxt[cur][a];
}}p;char s[maxn];
intsum[maxn],pow_10[maxn];
int main()
llt ans = 0;
for(int i=2;isum[p.en[i]])%mod;
ans = (ans - 1ll*sum[p.en[i]-p.len[i]]*pow_10[p.len[i]]%mod+mod)%mod;
}printf("%lld\n",ans);
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...