测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A5392. AA的C

编程题 普及/提高-
知识点

题目描述

给定一个只由 A/C/G/T 构成的字符串 $S$(长度为 $N$)。我们把形如相邻两字符为 A 接着 C 的位置视作一次出现(也就是统计相邻子串 AC 的出现次数,可相互不重叠、但天然不会重叠,因为都是相邻两位)。

接下来有 $Q$ 次询问。每次给出区间 $[l,r]$($1\le l<r\le N$),请你只在 $S$ 的子串 $S[l..r]$ 中统计 AC 出现了多少次。
形式化地说,就是统计满足 $l\le i<r$ 且 $S[i]=\texttt{'A'}$ 且 $S[i+1]=\texttt{'C'}$ 的下标 $i$ 的个数。

输入格式

第一行:两个整数 $N, Q$。

第二行:一个长度为 $N$ 的字符串 $S$,仅包含字符 A, C, G, T

随后 $Q$ 行:每行两个整数 $l, r$($1\le l<r\le N$)。

输出格式

输出共 $Q$ 行,每行一个整数,表示对应区间中 "AC" 的出现次数。

输入输出样例

输入 #1
7 3
ACACAGT
1 7
2 5
3 4
输出 #1
2
1
1

说明/提示

$1 \le N \le 10^5$

$1 \le Q \le 10^5$

$S$ 仅由 A/C/G/T 组成

$1 \le l < r \le N$

对于样例:

区间 $[1,7]$: ACACAGT 中 "AC" 出现在位置 $1$ 和 $3$,共 $2$ 次。

区间 $[2,5]$: 子串 CACA 中只有一次 "AC"(在子串的第 2、3 位)。

区间 $[3,4]$: 子串正好是 AC,出现 $1$ 次。
上一题 去做题 下一题