題目
乙個字串的字首是從第乙個字元開始的連續若干個字元,例如」abaab」共有5個字首,分別是a, ab, aba, abaa, abaab。
我們希望知道乙個n位字串s的字首是否具有迴圈節。
換言之,對於每乙個從頭開始的長度為 i (i>1)的字首,是否由重複出現的子串a組成,即 aaa…a (a重複出現k次,k>1)。
如果存在,請找出最短的迴圈節對應的k值(也就是這個字首串的所有可能重複節中,最大的k值)。
輸入格式
輸入包括多組測試資料,每組測試資料報括兩行。
第一行輸入字串s的長度n。
第二行輸入字串s。
輸入資料以只包括乙個0的行作為結尾。
輸出格式
對於每組測試資料,第一行輸出 「test case #」 和測試資料的編號。
接下來的每一行,輸出具有迴圈節的字首的長度i和其對應k,中間用乙個空格隔開。
字首長度需要公升序排列。
在每組測試資料的最後輸出乙個空行。
資料範圍
2≤n≤1000000
輸入樣例:
3
aaa4
abcd
12aabaabaabaab
0
輸出樣例:test case #1
2 23 3
test case #2
test case #3
2 26 2
9 312 4
分析:
**
#include #include #include using namespace std;
const int n=1000000;
int next[n];
char str[n];
int n;
void get_next()
cout<} return 0;
}
《演算法競賽高階指南》 防曬
有c頭奶牛進行日光浴,第i頭奶牛需要minspf i 到maxspf i 單位強度之間的陽光。每頭奶牛在日光浴前必須塗防曬霜,防曬霜有l種,塗上第i種之後,身體接收到的陽光強度就會穩定為spf i 第i種防曬霜有cover i 瓶。求最多可以滿足多少頭奶牛進行日光浴。輸入格式 第一行輸入整數c和l。...
《演算法競賽高階指南》蚯蚓
蛐蛐國最近蚯蚓成災了!隔壁跳蚤國的跳蚤也拿蚯蚓們沒辦法,蛐蛐國王只好去請神刀手來幫他們消滅蚯蚓。蛐蛐國裡現在共有 n 只蚯蚓,第 i 只蚯蚓的長度為 ai 所有蚯蚓的長度都是非負整數,即可能存在長度為0的蚯蚓。每一秒,神刀手會在所有的蚯蚓中,準確地找到最長的那乙隻,將其切成兩段。若有多隻最長的,則任...
演算法競賽高階指南筆記
原碼 原碼就是符號位加上真值的絕對值,即用第一位表示符號,其餘位表示值.比如如果是8位二進位制 其中,第一位為1是負數 1 0000 0001 原 1 1000 0001 原 因此,8位二進位制數的取值範圍 127,127 補碼正數的補碼是其本身 負數的補碼是在其原碼的基礎上,符號位不變,其餘各位取...