TJOI2015 弦論 字尾自動機求第k小串

2022-07-12 02:54:15 字數 900 閱讀 8793

對於乙個給定長度為\(n\)的字串,求它的第\(k\)小子串,若\(t\)為\(0\)表示不同位置的相同子串算作乙個,否則算作多個,子串數目不足\(k\)個,則輸出\(-1\)。

\(n\le 5\cdot 10^5\)

建sam,按拓撲序動態規劃求出每個結點後有多少個子串,然後貪心求解即可。

#include#define rep(i,x,n) for(int i=x;i<=n;i++)

#define per(i,n,x) for(int i=n;i>=x;i--)

#define sz(a) int(a.size())

#define rson mid+1,r,p<<1|1

#define pii pair#define lson l,mid,p<<1

#define ll long long

#define pb push_back

#define mp make_pair

#define se second

#define fi first

using namespace std;

const double eps=1e-8;

const int mod=1e9+7;

const int n=2e6+10;

const int inf=1e9;

int n,t,k;

char s[n];

struct sam

void insert(int c)

}sz[np]=1;

}void init()

void gao()}}

void solve(int k)}}

puts("");

}}sam;

int main()

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

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

3998 TJOI2015 弦論 字尾自動機

description 對於乙個給定長度為n的字串,求它的第k小子串是什麼。這道題感覺真的很入門啊 建出字尾自動機,對於t 0 t 0 預設所有節點的ri ght rig ht 集合為1,對於t 1 t 1 就直接正常求出ri ght rig ht 集合,然後對每個點求個su m x s um x ...

HYSBZ 弦論(字尾自動機)

description 對於乙個給定長度為n的字串,求它的第k小子串是什麼。input 第一行是乙個僅由小寫英文本母構成的字串s 第二行為兩個整數t和k,t為0則表示不同位置的相同子串算作乙個。t 1則表示不同位置的相同子串算作多個。k的意義如題所述。output 輸出僅一行,為乙個數字串,為第k小...