HDU 3746利用KMP找迴圈節

2021-06-18 23:29:02 字數 1009 閱讀 2959

題意大致是問給乙個序列後面補充幾個元素使其恰能成為幾個重複迴圈的序列。

aaa最小迴圈節是1,3個迴圈所以補充0個元素,abca迴圈節是3,應補充2個元素,abcde則迴圈節為5,補充5個元素,至於迴圈節的求法,是向wuyiqi巨巨學習的,膜拜下。。

/**********************

* author:crazy_石頭

* pro:hdoj 3746-cyclic nacklace

* algorithm: kmp

* judge status:accepted

* memory:728k

* time:125ms

* date:2013/11/01

***********************/

#include

#include

#include

#include

usingnamespacestd;

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

constintmaxn=200000+5;

intnext[maxn];

charp[maxn];

intn,test;//主串的串長;

inlinevoidgetnext(char*p,int*next)

}intmain()

return0;}

* this source code was highlighted byycdoit

. ( style: borland )

kmp找最小迴圈節,hdu3746

字串的長度為len 最小迴圈節的長度l len next len 需要補齊的字元個數r l len l 這個題沒啥大的問題,就是輸入很奇怪,如果用cin,getline 會錯,用scanf s s 就對了 include include include include include include...

HDU3746 KMP 最小迴圈節

最小迴圈節求法 定理 假設s的長度為len,則s存在最小迴圈節,迴圈節的長度l為len next len 子串為s 0 len next len 1 1 如果len可以被len next len 整除,則表明字串s可以完全由迴圈節迴圈組成,迴圈週期t len l。2 如果不能,說明還需要再新增幾個字...

hdu3746(kmp最小迴圈節)

題意 問在乙個字串末尾加上多少個字元能使得這的字串首尾相連後能夠迴圈 題解 就是利用next的性質求最小迴圈節 kmp求最下迴圈節 ans len next len ans就是最小迴圈節長度證明看那個部落格。然後就簡單了。include include include using namespace...