题解 | 舞萌时间到!
舞萌时间到!
https://www.nowcoder.com/practice/cef5fe464ca54a10ba1b4374f423f09c
#include <iostream>
#include <vector>
using namespace std;
int score(char c) {
if (c == 'P') return 3;
if (c == 'p') return 2;
if (c == 'G') return 1;
return 0;
}
int main() {
int q;
string s;
cin >> s >> q;
int len_s = s.length(); // s: 0-based
vector<int> d(len_s + 1, 0); // d: 1-based, d[0]=0
// 构建前缀和
for (int i = 1; i <= len_s; ++i) {
d[i] = d[i - 1] + score(s[i - 1]);
}
// 查询
while (q--) {
int l, r;
cin >> l >> r;
cout << d[r] - d[l - 1] << '\n';
}
return 0;
}
