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

    ID: 3361 Type: RemoteJudge 2000ms 500MiB Tried: 0 Accepted: 0 Difficulty: 7 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),满足 1i<jn1 \leq i \lt j \leq ni+1<ji + 1 < j,且 sl,rs_{l,r} 出现在 s1,is_{1,i} 中或 si+1,j1s_{i+1,j-1}中或 sj,ns_{j,n} 中。

输入格式

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

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

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

输出格式

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

5 2
00100
1 2
1 3

5
1

提示

测试点 nn qq 其它约定
11 =50=50 =100=100
232 \sim 3 =300=300
454 \sim 5 =2000=2000 =3000=3000
696 \sim 9 =100000=100000 sl,r106\sum \lvert s_{l,r} \rvert \le 10^6
101210 \sim 12 =30000=30000 =50000=50000
1313 =100000=100000 =100000=100000 ss 中只有 00
142014 \sim 20 =300000=300000

对于所有测试数据,1n1051 \le n \le 10^51q3×1051 \le q \le 3 \times 10^51lrn1 \le l \le r \le nss 中只有数字字符。