在這道題目中,我們用 $A=BC$ 表示字串 $A$ 是字串 $B$ 跟字串 $C$ 按照這個順序連接起來(連空白隔開都沒有)。 進一步的,定義 $P$ 是字串 $A$ 的前綴,表示存在一個字串 $B$ 使得 $A=PB$ ,其中 $P$ 跟 $B$ 都有可能是空字串。 再更進一步,若 $P\ne A$ 且 $P$ 不是空字串,則我們稱呼 $P$ 為 $A$ 的一個「好的前綴」。
一個字串 $Q$ 是字串 $A$ 的週期,當且僅當 $Q$ 是字串 $A$ 的一個「好的前綴」且字串 $A$ 是字串 $QQ$ 的一個前綴(未必要是「好的前綴」)。 舉例來說,字串 $abab$ 和 $ababab$ 都是字串 $abababa$ 的週期。 字串 $A$ 的最長週期就是 $A$ 的所有週期中長度最長的,或者若 $A$ 沒有週期,那就是它的最長週期就是空字串。 舉例來說,字串 $ababab$ 的最長週期是 $abab$,而字串 $abc$ 的最長週期是空字串。
現在給你一個字串,請你對這個字串的所有前綴計算最長週期的長度,並輸出這些長度的總和。
輸入共兩行,第一行包含一個正整數 $k$($1\le k \le 10^6$),表示字串的長度。 第二行包含所給予的長度 $k$ 的字串,字串只由英文小寫字母所組成。
輸出一行,該行包含一個整數,就是所給字串的所有前綴的最長週期長度的總和。
NEOJ Problem 404
POI XIII
本題為官方賽後公布的測資,故沒有 subtask。
No. | Testdata Range | Constraints | Score |
---|---|---|---|
1 | 0~19 | 100 |