BZOJ 4516 字尾自動機

2021-08-08 11:57:49 字數 459 閱讀 1230

題意:統計本質不同的子串數量。

題解:模板題,字尾自動機。在每乙個節點處,統計一下他能代表多少個 以他為終點的串。然後動態建立sam,同時每加一次都輸出一次就行了。唯一的不同是,這個題是int,而不是傳統的字串,那麼把nxt陣列換成map,複雜度多乙個log(sizeof[nxt]),實際上非常小。

code:

#includeusing namespace std;

const int maxn = 1e5+100;

long long ans=0;

struct sam

void add(int c)

if (!p)elseelse

}} ans+=len[last]-len[fa[last]];

}}sam;

int main()

return 0;

}

BZOJ 4516 字尾陣列 ST set

寫了一半 沒了啊啊啊 重新寫的 思路 先不考慮字尾自動機 我不會啊 那這道題只能用字尾陣列了 先把原串倒一下 字尾 字首 相當於每回在前面加了乙個字母 求不同的子串個數 首先 正常的求子串個數我們是會的 spoj 705 但是這道題比較坑 它讓你每回都輸出一下 那只好 維護乙個前驅 乙個後繼 求lc...

bzoj3998 字尾自動機

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

BZOJ 2780 字尾自動機

由於是英文題,簡要解釋一下題目。開始給出n個子串,和m個詢問,對於每個詢問讀入乙個子串,詢問n個子串中,有多少個子串包含所詢問的子串。實在看不懂的可以從樣例中意會一下。include include include include include include using namespace st...