#CF1968G2. 划分与最长公共前缀(困难版)

划分与最长公共前缀(困难版)

划分与最长公共前缀(困难版)

  • 时间限制:3 秒
  • 内存限制:256 MiB

题目描述

给定字符串 ss。对固定的 kk,把 ss 划分成恰好 kk 个连续非空子串 w1,…,wkw_1,\ldots,w_k,令 fkf_k 为这些子串的最长公共前缀长度的最大可能值。

给定 l,rl,r,求 fl,fl+1,…,frf_l,f_{l+1},\ldots,f_r。

输入格式

第一行是测试组数 tt。每组第一行包含 n,l,rn,l,r,第二行是长度为 nn 的小写字符串 ss。

输出格式

每组输出 r−l+1r-l+1 个整数。

样例输入 1

7
3 1 3
aba
3 2 3
aaa
7 1 5
abacaba
9 1 6
abababcab
10 1 10
aaaaaaawac
9 1 9
abafababa
7 2 7
vvzvvvv

样例输出 1

3 1 0
1 1
7 3 1 1 0
9 2 2 2 0 0
10 3 2 1 1 1 1 1 0 0
9 3 2 1 1 0 0 0 0
2 2 1 1 1 0

数据范围

1≤t≤1041\le t\le10^4,1≤l≤r≤n≤2⋅1051\le l\le r\le n\le2\cdot10^5,所有测试组的 nn 之和不超过 2⋅1052\cdot10^5。

子任务编号 分值 特殊限制
1 20 每组 n≤100n\le100
2 40 每组 n≤3000n\le3000
3 无特殊限制