省選專練之後綴自動機 HAOI2016 找相同字元

2021-08-23 12:37:37 字數 976 閱讀 8710

因為我太菜了,我寫了lcs就忘了(溫故而知新的重要性啊)

和lcs**幾乎一樣

又乙個算貢獻的問題

now->pre的貢獻為siz*(now->step-pre->step)

這個時候可以預處理

但是當前匹配串長度並不一定是now->step

這很重要

#include#include#include#include#includeusing namespace std;

typedef int int;

#define ll long long

const int n=1e6+100;

char s[n];

struct samsa[n];

int cnt,last;

int siz[n];

int c[n];

int a[n];

ll f[n];

ll ans;

inline void insert(char c)

else

} siz[np]++;

} void getans(int p,int len)

} void solve()

for(int i=1;i<=cnt;i++)

scanf("%s",s+1);

len=strlen(s+1);

int now=1;

int lcs=0;

for(int i=1;i<=len;i++)

else

}ans+=f[sa[now].pre]+siz[now]*(lcs-sa[sa[now].pre].step);

} cout<

}}solution;

int main()

省選專練之後綴自動機 TJOI2015 弦論

這個看似模板,但是我還是沒有理解透徹,畢竟寫得慢還是主要比不過抄碼的人。但是在zjy鉅子本色出演的題目,我還是請教了zjy本人,我大抵是會了。這個本身有兩種情況 1 t 0求right集合 又叫endpos集合 2 t 1求siz集合 這個都好求 然後就是乙個類似於可持久化線段樹的查詢方式了 從小到...

省選專練(學習)字尾自動機SAM(超詳細)

先談我對字尾自動機的理解 這不完全正確,它可以識別所有子串,於是也可以識別所有字尾 錯誤字尾自動機極限時間複雜度是o n 2 1 比sa和s tree優 然後是字尾自動機可以幹什麼 什麼?你說把他轉成lis跑nlogn?既最長公共子串。所以不是lcs最長公共子串行。然後建出了sam就好了 建的過程不...

省選專練之後綴自動機APIO2014回文串

本來是個回文自動機模板題 但是也可以用字尾自動機ac掉 先跑manacher 這可以識別所有的回文串 然後放進自動機裡暴力跑就是了 include include include include includeusing namespace std typedef int int define ll...