传统题 1000ms 256MiB

奶龙的 3G 信号实验

该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。

Problem Description

在 CQUPT(重庆邮电大学) 的某个神秘实验室里,
奶龙正在测试一套 3G 超远古信号发送系统。

由于 3G 网络极其不稳定,每次发送字符串信号时,
都会随机丢失一个字符。

奶龙觉得这太不抽象了,于是他决定:
我自己来决定删哪一位!

nailiong3g


题目描述

给定一个长度为 n 的字符串 s。

对于每一个位置 i (1 ≤ i ≤ n),定义 tit_i 为:

从字符串 s 中 删除第 i 个字符 后得到的字符串
(其余字符的相对顺序保持不变)


最长公共前缀(LCP)

对于两个字符串 x 和 y,
定义 lcp(x, y) 为它们的 最长公共前缀长度,即:

最大的整数 ℓ ≥ 0,使得
x[1..ℓ] = y[1..ℓ]


奶龙的问题

奶龙会选择 两个不同的位置 i ≠ j 进行删除操作,
得到字符串 tit_i 与 tjt_j。

请你帮奶龙计算:

所有 i ≠ j 中
lcp(ti,tj)lcp(t_i, t_j) 的最大值

形式化地,你需要求:

max⁡1≤i<j≤nlcp(ti,tj)\max_{1 \le i < j \le n} lcp(t_i, t_j)

⚠️ 注意:
你 不需要输出位置 i 和 j,只需输出最大值。

Input Format

第一行一个整数 T,表示测试用例数量
(1≤T≤2×105)(1 ≤ T ≤ 2 × 10^5)

接下来 T 行,每行一个字符串 s,满足: 2≤∣s∣≤5×1052 ≤ |s| ≤ 5 × 10^5 仅包含小写英文字母
所有测试用例中 |s| 的总和不超过 5×1055 × 10^5

Output Format

对于每个测试用例,输出一行一个整数,
表示最大可能的 lcp(ti,tj)lcp(t_i, t_j)。

Sample

样例 1

输入

5
abac
abbbb
cbacb
babcc
aa

输出

2
4
3
4
1

解释(非唯一方案)

  • 对于字符串 abac: 删除第 3 位字符 'a' 与删除第 4 位字符 'c',得到的字符串分别为 abc 与 aba,其最长公共前缀长度为 2,这是可以达到的最大值。

  • 对于字符串 abbbb: 删除任意一个 'b',得到的字符串均为 abbb, 因此最长公共前缀长度为 4。

  • 对于字符串 cbacb: 可以选取合适的两个删除位置,使得得到的字符串在前 3 个字符完全一致。

  • 对于字符串 babcc: 删除相邻相同字符 'c' 中的任意一个, 可以得到两个完全相同的字符串,最长公共前缀长度为 4。

  • 对于字符串 aa: 删除任意一个字符后均得到 "a", 最长公共前缀长度为 1。


样例 2

输入

1
abcde

输出

3

Hint

1≤T≤2×1051 \le T \le 2 \times 10^5 2≤∣s∣≤5×1052 \le |s| \le 5 \times 10^5

字符串 $$s$$ 仅由小写英文字母组成, 所有测试用例中字符串长度之和不超过 5×1055 \times 10^5

重庆邮电大学第二十届ACM程序设计大赛(现场赛)

未参加
状态
已结束
规则
XCPC
题目
11
开始于
2025-12-28 13:00
结束于
2025-12-28 18:00
持续时间
5 小时
主持人
参赛人数
4