P10233题解
题目传送门
思路
这道题很简单,思路也很明显,一眼就可以看出来是前缀和。
数据读入时,我们用
然后是
注意不要用 memset!!!否则会 TLE!!!
代码
- 切勿抄袭!!!
#include<bits/stdc++.h>
using namespace std;
int a[10000010];
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
string s;
int q;
cin>>s;
scanf("%d",&q);
int n=s.size();
for(register int i=1;i<=n;i++)
{
a[i]=a[i-1];//避免使用 memset
if (s[i-1]=='P')
a[i]+=3;
else if (s[i-1]=='p')
a[i]+=2;
else if (s[i-1]=='G')
a[i]++;
}
for(register int i=1;i<=q;i++)
{
int l,r;
scanf("%d%d",&l,&r);
printf("%d\n",a[r]-a[l-1]);
}
}
}