#P4482. [BJWC2018] Border 的四种求法

[BJWC2018] Border 的四种求法

题目背景

Scape 一到机房,所有做题的人便都看着他笑,有的叫道,“Scape,你一定又被标准分倍杀了!”他不回答,对柜里说,“测两个程序,看一眼成绩单。”便拷出两个程序。他们又故意的高声嚷道,“你怎么欧拉回路和逆序对都 WA 了!”……

题目描述

Scape 知道,以上的故事只是 OI 生涯里的一个意外,为了证明自己,他决定教你 Border\text{Border} 的四种求法。

给一个小写字母字符串 SS,qq 次询问每次给出 l,rl,r ,求 sl…rs_{l\ldots r} 的 Border\text{Border}。

Border\text{Border}:对于给定的串 ss,最大的 ii 使得 s1…i=s∣s∣−i+1…∣s∣s_{1\ldots i} = s_{|s|-i+1\ldots |s|}。∣s∣|s| 为 ss 的长度。

输入格式

第一行一个字符串 SS。

第二行一个整数 qq 表示询问个数。

接下来的 qq 行每行两个整数 l,rl,r 表示一个询问。

输出格式

对于每组询问输出答案。

abbabbaa
3
1 8
1 7
2 7
1
4
3

提示

对于 3030% 的数据, n,q≤1000n,q\leq 1000 。

对于 5050% 的数据, n,q≤2×104n,q\leq 2\times 10^4 。

对于另外 30%30\% 的数据,答案至少为 r−l+1r-l+1 的一半。

对于 100%100\% 的数据, n,q≤2×105n,q\leq 2\times 10^5 。