給定乙個只包含小寫字母的字串ss,
請你求出 ss 的所有出現次數不為 11 的子串的出現次數乘上該子串長度的最大值。
輸入格式:
一行乙個僅包含小寫字母的字串ss
輸出格式:
乙個整數,為 所求答案
輸入樣例#1:
abab
輸出樣例#1:
說明對於10%10%的資料,|s|<=1000∣s∣<=1000
對於100%100%的資料,|s|<=10^6∣s∣<=10
6
#include
using
namespace std;
const
int n =
1e6+10;
const
int m = n <<1;
typedef
long
long ll;
char s[n]
;int cur =
1,node =
1,n,last;
int ch[m][27
],fa[m]
,len[m]
,size[m]
;ll ans;
void
build
(int c,
int id)
} size[cur]=1
;}int c[n]
,sa[n<<1]
;void
flower()
}int
main()
P3804 模板 字尾自動機
計算出現次數 1的子串長度 次數的最大值 sam 乙個串的出現次數等於right endpos集合的大小 而這個集合的大小等於所有parent樹上兒子的大小 這樣子的話,給每個終止位置的size記為1 然後按照拓撲序累加,這就是right endpos集合的大小 最後對於每個size 1的節點,an...
luogu3804 模板 字尾自動機
題目描述 給定乙個只包含小寫字母的字串 s 請你求出 s 的所有出現次數不為 1 的子串的出現次數乘上該子串長度的最大值。輸入輸出格式 輸入格式 一行乙個僅包含小寫字母的字串 s 輸出格式 乙個整數,為 所求答案 輸入輸出樣例 輸入樣例 1 複製 abab 輸出樣例 1 複製 4 說明 對於 10 ...
P3804 模板 字尾自動機
給出乙個字串,求出所有出現次數不為1的子串,長度 出現次數的最大值 1 leq s leq 1000 000 用sam求出所有子串出現的次數即可 includeusing namespace std const int n 2 1e6 10 typedef long long ll char s n...