#ABC122C. GeT AC

GeT AC

题目描述

You are given a string SS of length NN consisting of A, C, G and T. Answer the following QQ queries:

  • Query ii (1iQ1 \leq i \leq Q): You will be given integers lil_i and rir_i (1li<riN1 \leq l_i \lt r_i \leq N). Consider the substring of SS starting at index lil_i and ending at index rir_i (both inclusive). In this string, how many times does AC occurs as a substring?

给你一个长度为 NN 的字符串 SS ,由 ACGT 组成。请回答以下 QQ 个问题:

  • 查询 ii ( 1iQ1 \leq i \leq Q ):你将得到整数 lil_irir_i ( 1li<riN1 \leq l_i \lt r_i \leq N )。考虑从索引 lil_i 开始到索引 rir_i 结束的 SS 子串(包括这两个索引)。在这个字符串中,AC作为子串出现了多少次?

输入格式

输入内容按以下格式标准输入:

NN QQ
SS
l1l_1 r1r_1
::
lQl_Q rQr_Q

输出格式

打印 QQ 行。 ii -th 行应包含 ii -th 查询的答案。

样例 #1

样例输入 #1

8 3
ACACTACG
3 7
2 3
1 8

样例输出 #1

2
0
3

说明

字符串 TT 的子串是指从 TT 的开头和结尾移除 0 个或多个字符后得到的字符串。

例如,"ATCODER "的子串包括 "TCO"、"AT"、"CODER"、"ATCODER "和(空字符串),但不包括 "AC"。

数据规模与约定

  • 2N1052 \leq N \leq 10^5
  • 1Q1051 \leq Q \leq 10^5
  • SS 是长度为 NN 的字符串。
  • SS 中的每个字符都是 ACGT
  • 1li<riN1 \leq l_i \lt r_i \leq N

样例 11 解释

  • 查询 11 :从索引 33 开始,到索引 77 结束的 SS 的子串是 ACTAC。在这个字符串中,AC作为子串出现了两次。
  • 查询 22 :从索引 22 开始,到索引 33 结束的 SS 的子串是 CA。在这个字符串中,AC作为子串出现的次数为 0。
  • 查询 33 :从索引 11 开始,到索引 88 结束的 SS 的子串是 ACACTACG。在这个字符串中,AC作为子串出现了三次。