#P4384. [八省联考 2018] 制胡窜

    ID: 3361 Type: RemoteJudge 2000ms 500MiB Tried: 0 Accepted: 0 Difficulty: (None) Uploaded By: Tags>字符串2018线段树倍增各省省选后缀自动机,SAM

[八省联考 2018] 制胡窜

题目描述

对于一个字符串 ss,我们定义 ∣s∣|s| 表示 ss 的长度。

接着,我们定义 sis_i 表示 ss 中第 ii 个字符,sl,rs_{l,r} 表示由 ss 中从左往右数,第 ll 个字符到第 rr 个字符依次连接形成的字符串。特别的,如果 l>rl \gt r,或者 l∉[1,∣s∣]l \notin [1, |s|],或者 r∉[1,∣s∣]r \notin [1, |s|],我们可以认为 sl,rs_{l,r} 为空串。

给定一个长度为 nn 的仅由数字构成的字符串 ss,现在有 qq 次询问,第 kk 次询问会给出 ss 的一个子串 sl,rs_{l,r},请你求出有多少对 (i,j)(i, j),满足 1≤i<j≤n1 \leq i \lt j \leq n,i+1<ji + 1 < j,且 sl,rs_{l,r} 出现在 s1,is_{1,i} 中或 si+1,j−1s_{i+1,j-1}中或 sj,ns_{j,n} 中。

输入格式

输入的第一行是两个整数,分别表示字符串长度 nn 和询问次数 qq。

第二行有一个长度为 nn 的只包含数字字符的字符串,表示 ss。

接下来 qq 行,每行两个正整数 ll 和 rr,表示此次询问的子串是 sl,rs_{l,r}。

输出格式

对于每个询问,输出一行一个整数表示答案。

5 2
00100
1 2
1 3

5
1

提示

测试点 nn qq 其它约定
11 =50=50 =100=100 无
2∼32 \sim 3 =300=300
4∼54 \sim 5 =2000=2000 =3000=3000
6∼96 \sim 9 =100000=100000 ∑∣sl,r∣≤106\sum \lvert s_{l,r} \rvert \le 10^6
10∼1210 \sim 12 =30000=30000 =50000=50000 无
1313 =100000=100000 =100000=100000 ss 中只有 00
14∼2014 \sim 20 =300000=300000 无

对于所有测试数据,1≤n≤1051 \le n \le 10^5,1≤q≤3×1051 \le q \le 3 \times 10^5,1≤l≤r≤n1 \le l \le r \le n,ss 中只有数字字符。