題目描述
給定乙個只包含小寫字母的字串
s ,
請你求出
s 的所有出現次數不為
1 的子串的出現次數乘上該子串長度的最大值。
輸入輸出格式
輸入格式:
一行乙個僅包含小寫字母的字串
s 輸出格式:
乙個整數,為 所求答案
輸入輸出樣例
輸入樣例#1: 複製
abab
輸出樣例#1: 複製
4 說明
對於 10% 的資料,
∣s∣<=1000
對於 100% 的資料,
∣s∣<=106
拓撲排序統計出每個子串出現的個數 然後直接跑一遍統計即可
#include
#include
#include
#define n 2200000
#define ll long long
using
namespace
std;
inline
char gc()
return *s++;
}inline
void read_s(char *s)
char s[n>>1];ll ans;
int len[n],fa[n],ch[n][26];
int cnt=1,root=1,last=1,c[n>>1],size[n],rk[n];
inline
void insert1(int x)
}last=np;size[np]=1;
}int main()printf("%lld\n",ans);
return
0;}
P3804 模板 字尾自動機
計算出現次數 1的子串長度 次數的最大值 sam 乙個串的出現次數等於right endpos集合的大小 而這個集合的大小等於所有parent樹上兒子的大小 這樣子的話,給每個終止位置的size記為1 然後按照拓撲序累加,這就是right endpos集合的大小 最後對於每個size 1的節點,an...
Lougu P3804 模板 字尾自動機
給定乙個只包含小寫字母的字串ss,請你求出 ss 的所有出現次數不為 11 的子串的出現次數乘上該子串長度的最大值。輸入格式 一行乙個僅包含小寫字母的字串ss 輸出格式 乙個整數,為 所求答案 輸入樣例 1 abab 輸出樣例 1 說明對於10 10 的資料,s 1000 s 1000 對於100 ...
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...