bzoj 2251 外星聯絡

2021-07-04 02:11:04 字數 559 閱讀 6614

題意:

給出乙個字串,求出現次數超過1的子串的出現個數;

字串長度<=3000;

題解:

題目問的是子串的個數,那麼首先我們要找到所有的子串;

而字串的所有字尾的字首可以不重不漏的表示所有子串;

那麼如果將所有的字尾加入trie樹,每個經過的結點——也就是這個字尾的字首——計數+1;

然後題目要求按字典序輸出,利用一下trie樹性質搞好就完了;

指標版trie好慢啊。。。

**:

#include#include#include#define n 3100

using namespace std;

struct trie

}*root=new trie();

char str[n];

void insert(char *s) }

void dfs(trie *p)

int main()

bzoj2251 外星聯絡

description 小 p 在看過電影 超時空接觸 contact 之後被深深的打動,決心致力於尋 找外星人的事業。於是,他每天晚上都爬在屋頂上試圖用自己的收音機收聽外星 人發來的資訊。雖然他收聽到的僅僅是一些雜訊,但是他還是按照這些雜訊的高 低電平將接收到的訊號改寫為由 0 和 1 構成的串,...

bzoj2551 外星聯絡 字尾陣列

小 p 在看過電影 超時空接觸 contact 之後被深深的打動,決心致力於尋 找外星人的事業。於是,他每天晚上都爬在屋頂上試圖用自己的收音機收聽外星 人發來的資訊。雖然他收聽到的僅僅是一些雜訊,但是他還是按照這些雜訊的高 低電平將接收到的訊號改寫為由 0 和 1 構成的串,並堅信外星人的資訊就隱藏...

BJWC2010 外星聯絡 字尾陣列

description 求乙個 01 串中所有重複出現次數大於 1 的子串所出現的次數,按照字典序排序輸出。solution 預處理出字尾陣列和高度陣列。對於每乙個字尾 i 如果 h i 1 h i 我們就去找到在這之後對任意 j in h i h i 1 第一次出現 h k 的 k 那麼 k i ...