KMP
KMP 是在线求 border 数组( 函数),也就是每个前缀中最长公共前后缀的长度。
求周期(border 套 border)
题目:P3435 - [POI 2006] OKR-Periods of Words
周期指的是 ,不是循环节。实际上求的是最短公共前后缀的长度。只需要不停地跳 border 直到 border 为 (没有更小的公共前后缀),此时长度即为所求。
关键: 是 的次长公共前后缀。
border 上 DP
题目:P3426 - [POI 2005] SZA-Template
关键:设 为 处的待求值。可以从 转移。
Z 函数
Z 函数是每个后缀和整个数组的 LCP,是离线算法。
但是用 KMP 求 Z 函数可以做到在线。只需要在跳 函数的时候同时记录下当前需要确定的 的所有 即可。