小 p 在看過電影《超時空接觸》(contact)之後被深深的打動,決心致力於尋
找外星人的事業。於是,他每天晚上都爬在屋頂上試圖用自己的收音機收聽外星
人發來的資訊。雖然他收聽到的僅僅是一些雜訊,但是他還是按照這些雜訊的高
低電平將接收到的訊號改寫為由 0 和 1 構成的串, 並堅信外星人的資訊就隱藏在
其中。他認為,外星人發來的資訊一定會在他接受到的 01 串中重複出現,所以
他希望找到他接受到的 01 串中所有重複出現次數大於 1 的子串。但是他收到的
訊號串實在是太長了,於是,他希望你能編乙個程式來幫助他。
輸入檔案的第一行是乙個整數n ,代表小 p 接收到的訊號串的長度。
輸入檔案第二行包含乙個長度為n 的 01 串,代表小 p 接收到的訊號串。
輸出檔案的每一行包含乙個出現次數大於1 的子串所出現的次數。輸出的順
序按對應的子串的字典序排列。
7 1010101
3 3
2 2
4 3
3 2
2 對於 100%的資料,滿足 0 <= n <=3000
題解:把字尾陣列求出來然後暴力即可.
**:#include#include#include#define n 30010
#define m 30010
using namespace std;
int t1[n],t2[n],sa[n],c[m],s[n],height[n],rank[n],n;
char ch[n];
bool cmp(int *y,int p,int q,int k)
void build_sa(int m)
}void getheight(){
int k=0;
for (int i=0;i=j&&k
bzoj 2251 外星聯絡
題意 給出乙個字串,求出現次數超過1的子串的出現個數 字串長度 3000 題解 題目問的是子串的個數,那麼首先我們要找到所有的子串 而字串的所有字尾的字首可以不重不漏的表示所有子串 那麼如果將所有的字尾加入trie樹,每個經過的結點 也就是這個字尾的字首 計數 1 然後題目要求按字典序輸出,利用一下...
bzoj2251 外星聯絡
description 小 p 在看過電影 超時空接觸 contact 之後被深深的打動,決心致力於尋 找外星人的事業。於是,他每天晚上都爬在屋頂上試圖用自己的收音機收聽外星 人發來的資訊。雖然他收聽到的僅僅是一些雜訊,但是他還是按照這些雜訊的高 低電平將接收到的訊號改寫為由 0 和 1 構成的串,...
bzoj2749 外星人 數論
一開始還以為求方程 n x 1的解。後來看了半天沒有發現模數。原來下面還有樣例解釋。注意到解釋中有乙個 2 1,即為這道題目的突破口。乙個顯然的事實是,要消去pi這個質數,至少需要qi次。而求一次 x pi就會分解出乙個質因數2。而2分解以後就只剩下1了。而每次只能消去1個2,所以實際上是求能夠分解...