一行乙個整數表示答案
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
#include
#define fo(i,a,b) for(int i=a;i<=b;i++)
#define fd(i,a,b) for(int i=a;i>=b;i--)
#define n 101000
#define ll long long
using namespace std;
int n,str,s[n],d[n*20][2],tot=0,last[n],next[n*2],to[n*2],a[n][21],rd[n];
ll ans=0;
struct samt[n*50];
void putin(int x,int y)
void add(int x,int cm,int nu,int last)}}
void pre()}}
int main()
tot=1;pre();
fo(i,1,tot) ans+=(t[i].len-t[t[i].fail].len);
printf("%lld\n",ans);
}
ZJOI2015 諸神眷顧的幻想鄉
p3256 zjoi2015 day1 諸神眷顧的幻想鄉 時間限制 20000 ms 空間限制 524288 kb 問題描述 幽香是全幻想鄉里最受人歡迎的萌妹子,這天,是幽香的2600歲生日,無數幽香的粉絲到了幽香家門前的太陽花田上來為幽香慶祝生日。粉絲們非常熱情,自發組織表演了一系列節目給幽香看。...
ZJOI2015 諸神眷顧的幻想鄉
求不同的子串個數 如果規定根的話,那麼彎曲的路徑難以處理。由於只有20個葉子,所以以每個葉子分別為根,建20棵trie樹,再把20棵trie樹合成一棵。這樣,trie上乙個到某個祖先的路徑構成了所有的子串。可能重複 所以trie上建sam。sam的路徑條數 或者每個點的len i len fa i ...
ZJOI2015 諸神眷顧的幻想鄉
給定一棵葉子節點不超過 20 個的無根樹,每個節點上都有乙個 0 sim 9 的數字,求樹上本質不同路徑條數。兩條路徑相同是指其路徑上所以節點上的數字順次鏈結組成的字串相同。1 le n le 10 5 如果此題是從根出發的路徑,那相當於就是給定了一棵 text 樹,非常好做。考慮轉化成從根開始的路...