Lougu P3804 模板 字尾自動機

2021-09-03 02:15:11 字數 785 閱讀 1470

給定乙個只包含小寫字母的字串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...