在處理字串時,素來分為「KMP 派」與「Z value 派」。KMP 派在看到字串題時打死不用 Z value、Z value 派在看到字串題時打死不用 KMP。
這時候生為一個出題者,在出題目時當然要想方設法出一題兩全其美的好題目,讓這兩派的人都寫不出來:
有ㄧ個祕密字串 $s$ ,現在已經知道了其 KMP 的值,請計算出 $s$ 的 z value。
注意由於 KMP 與 Z value 在民間有眾多版本且各自有微小差距,在本題請一概以講義定義為準。
舉例來說當祕密字串為 $s = \texttt{"ababa"}$ ,則 KMP$(s) = -1, -1, 0, 1, 2$、 Z value$(s) = 5, 0, 3, 0, 1$。
測試資料第一行包含一個正整數 $T$ ,代表一共有 $T$ 筆測資。
接下來為 $T$ 筆測資,每筆測資第一行有一個正整數 $N$,代表字串 $s$ 的長度。
下一行一共包含一個 $N$ 個整數 $a_0, a_1, \cdots, a_{N - 1}$,分別代表字串 $s$ 算出的 KMP 值。
對於每一筆測資,請一共輸出 $N$ 個數字,代表字串 $s$ 的 Z value。
IOICamp 2021 Day3 pG
No. | Testdata Range | Constraints | Score |
---|---|---|---|
1 | 0 | 範例測資 | 0 |
2 | 0~56 | 無額外限制 | 100 |