题解 | 舞萌时间到!

舞萌时间到!

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;
}

全部评论

相关推荐

01-30 16:13
浙江大学 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务