CSES 2107 - String Functions
1.0s 512M考慮一個有 \(n\) 個字元的字串,位置編號為 \(1,2,\dots,n\)。你的任務是計算以下兩個函數的所有值:
-
\(z(i)\) 表示從位置 \(i\) 開始、且是整個字串前綴的子字串的最大長度。另外定義 \(z(1)=0\)。
-
\(\pi(i)\) 表示以位置 \(i\) 結尾、是整個字串前綴、且長度至多 \(i-1\) 的子字串的最大長度。
注意函數 \(z\) 用在 Z 演算法中,而函數 \(\pi\) 用在 KMP 演算法中。
輸入格式
唯一一行輸入有一個長度為 \(n\) 的字串,每個字元都在 a–z 之間。
輸出格式
輸出兩行:先輸出 \(z\) 函數的各個值,再輸出 \(\pi\) 函數的各個值。
範例輸入 1
abaabca
範例輸出 1
0 0 1 2 0 0 1
0 0 1 1 2 0 1
限制
- \(1 \le n \le 10^6\)
題目來源
題目來自 CSES Problem Set(Antti Laaksonen),授權 CC BY-NC-SA 4.0;本頁為翻譯,以相同授權分享。
登入後即可撰寫程式並提交評測。
登入