ZJOI2015 諸神眷顧的幻想鄉

2022-10-11 18:36:12 字數 778 閱讀 2236

給定一棵葉子節點不超過 \(20\) 個的無根樹,每個節點上都有乙個 \(0\sim 9\) 的數字,求樹上本質不同路徑條數。兩條路徑相同是指其路徑上所以節點上的數字順次鏈結組成的字串相同。

\(1\le n\le 10^5\)。

如果此題是從根出發的路徑,那相當於就是給定了一棵 \(\text\) 樹,非常好做。

考慮轉化成從根開始的路徑,對於一條路徑 \(u\rightarrow v\),以 \(u\) 為根的子樹內的所有節點都可以作為根將這條路徑計算到。

給定的樹有良好性質:葉子節點不超過 \(20\) 個。由於任意乙個樹上的節點的子樹內必定有葉子節點,於是把每個葉子節點作為根遍歷整棵樹時形成的所有串加入廣義字尾自動機即可。

#includeusing namespace std;

typedef long long ll;

const int n=2e6+5;

int n,o,col[n];char s[n];vectorg[n];

struct node

};struct trie

}t1;

struct suffix_automaton

} return nw;

} inline void build()

} inline ll sum_diff()

}sam;

inline void dfs(int x,int fa,int fid)

int main()

ZJOI2015 諸神眷顧的幻想鄉

p3256 zjoi2015 day1 諸神眷顧的幻想鄉 時間限制 20000 ms 空間限制 524288 kb 問題描述 幽香是全幻想鄉里最受人歡迎的萌妹子,這天,是幽香的2600歲生日,無數幽香的粉絲到了幽香家門前的太陽花田上來為幽香慶祝生日。粉絲們非常熱情,自發組織表演了一系列節目給幽香看。...

ZJOI2015 諸神眷顧的幻想鄉

一行乙個整數表示答案 7 3 0 2 1 2 1 0 0 1 2 3 4 3 5 4 6 5 7 2 5n 100000,c 10 發現葉子只有10個,那麼可以以每個葉子為根,建trie,然後建廣義字尾自動機 對於每個狀態,代表的字串個數就是max min 1 include include inc...

ZJOI2015 諸神眷顧的幻想鄉

求不同的子串個數 如果規定根的話,那麼彎曲的路徑難以處理。由於只有20個葉子,所以以每個葉子分別為根,建20棵trie樹,再把20棵trie樹合成一棵。這樣,trie上乙個到某個祖先的路徑構成了所有的子串。可能重複 所以trie上建sam。sam的路徑條數 或者每個點的len i len fa i ...