#P1541. 「九省联考 2018」制胡窜

「九省联考 2018」制胡窜

题目描述

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

接着,我们定义 SiS_i 表示 SS 中第 ii 个字符,SL,RS_{L,R} 表示由 SS 中从左往右数,第 LL 个字符到第 RR 个字符依次连接形成的字符串。特别的,如果 L>RL > R ,或者 L<[1,∣S∣]L < [1, |S|], 或者 R<[1,∣S∣]R < [1, |S|] 我们可以认为 SL,RS_{L,R} 为空串。

给定一个长度为 nn 的仅由数字构成的字符串 SS,现在有 qq 次询问,第 kk 次询问会给出 SS 的一个字符串 Sl,rS_{l,r} ,请你求出有多少对 (i,j)(i, j),满足 1≤i<j≤n1 \le i < j \le n,i+1<ji + 1 \lt j,且 Sl,rS_{l,r} 出现在 S1,iS_{1,i} 中或 Si+1,j−1S_{i+1, j−1} 中或 Sj,nS_{j,n} 中。

输入格式

输入的第一行包含两个整数 n,qn, q。 第二行包含一个长度为 nn 的仅由数字构成的字符串 SS。 接下来 qq 行,每行两个正整数 ll 和 rr,表示此次询问的子串是 Sl,rS_{l,r}。

输出格式

对于每个询问,输出一个整数表示合法的数对个数。

样例

5 2
00100
1 2
1 3
5
1

数据范围与提示

测试点 n q 其它约定
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 · 10^5,1≤l≤r≤n1 \le l \le r \le n。