CF313B 题解
zhang_kevin · · 题解
题目传送门
题目描述
给定一个长度为 . 和 #),还有
解题思路
这道题很简单,大部分人都会想到在给定的区间中暴力枚举。但是这种方法的时间复杂度是
因此我们要使用前缀和进行优化。前缀和是解决静态区间查询的好方法,也是解决这种问题的利器。
那这道题该如何使用前缀和呢?我们只需定义数组
最后询问时只需要输出
AC代码
#include<iostream>
using namespace std;
string s;
int n, m, l, r, f[100001];
int main(){
cin >> s >> m;
for(int i = 0; i < s.length(); i++){
bool flag = (s[i]==s[i+1]);
f[i+1] = f[i] + flag;
}
while(m--){
cin >> l >> r;
cout << f[r-1] - f[l-1] << endl;
}
}