#P51749. 「LOJ」 猫咪

「LOJ」 猫咪

题目描述

原题来自:Codeforces Round #364 (Div. 1) E

大 F 想养猫。

“你喜欢小猫咪吗?”
“喵。”
“你变成猫了吗?”
“喵!”

大 F 喜欢小猫咪,大 F 想养很多很多小猫咪,但是大 F 的想象力十分匮乏,她希望小 F 来帮她为猫咪们取名字。

小 F 也喜欢小猫咪,小 F 也想养许多许多小猫咪,但是小 F 有强迫症,如果养了 KK 只猫咪,名字分别是非空字符串 S1,S2,SKS_1, S_2, \ldots S_K,她希望对于所有的 2iK2 \le i \le KSiS_iSi1S_{i-1}双子串。另外,小 F 还希望 S1S_1 是她自己给定的字符串 TT子串

诶,我们刚刚提到了双子串。字符串 AA 被称作 BB双子串,意思是说,AA 作为 BB 的子串,在 BB 中的不同位置出现了至少 22。比如说, ABCZZABCZZABCZZ 的双子串, ABAABABA 的双子串(这里的两次出现有重叠部分,这是允许的),而 AAB 不是 AABAB 的双子串。

小 F 想养尽量多的猫咪,所以小 F 想要找到尽量大的 KK,使得存在 S1,S2,,SKS_1, S_2, \ldots, S_K 满足条件。

输入格式

一行一个字符串 TT,仅含小写字母。

输出格式

一个整数,可能的 KK 的最大值。

样例 1

qaqaqzz
3

S1=S_1= qaqaqzz

S2=S_2= qaq

S3=S_3= q

dabcabcabcabca
5

S1=S_1= abcabcabcabca

S2=S_2= abcabcabca

S3=S_3= abcabca

S4=S_4= abca

S5=S_5= a

abracadabra
3

S1=S_1= abracadabra

S2=S_2= abra

S3=S_3= a

数据范围与提示

对于所有数据,保证 1N=T2×1051 \le N = \left| T\right| \le 2\times 10^5SS 仅含小写字母。

下表为各个 Subtask 的额外限制与得分,空格表示该项无额外限制。你只有通过一个 Subtask 的所有数据才能得到该 Subtask 的分。

Subtask 编号 NN 特殊限制 分值
1 50\le 50 5
2 4000\le 4000 24
3 KK 取到最大值时,存在一种 S1KS_{1\ldots K} 的取法使得对于所有 1iK1\le i \le KSiS_i 都是 TT 的前缀 17
4 54