题解 | 舞萌时间到!
舞萌时间到!
https://www.nowcoder.com/practice/cef5fe464ca54a10ba1b4374f423f09c
#include<bits/stdc++.h>
using namespace std;
using ll=long long;
using ull=unsigned long long;
using i128=__int128_t;
using u128=__uint128_t;
using ld=long double;
void solve()
{
string s;//先根据字符串构建出得分数组 然后构建前缀和数组即可
cin >> s;
vector<int>v(s.size()+1,0),pre(s.size()+1,0);
for(int i=1;i<=s.size();i++)
{
if(s[i-1]=='P') v[i]=3;
else if(s[i-1]=='p') v[i]=2;
else if(s[i-1]=='G') v[i]=1;
else v[i]=0;
}
for(int i=1;i<=s.size();i++) pre[i]=pre[i-1]+v[i];
int q,l,r;
cin >> q;
while(q--)
{
cin >> l >> r;
cout << pre[r]-pre[l-1] << "\n";
}
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(nullptr);
int t=1;
//cin >> t;
while(t--)
{
solve();
}
return 0;
}