B. Love Song
不要隔天写题解,会变得不幸。
题目传送门:
题面截图:
题目大意:
给定长度为 n 的字符串,有 q 次询问,每次询问指定其中的一个连续子串 [ l , r ] 求将其中的字母‘a’ 重复1次, ‘b’ 重复2次这样处理后的长度。
思路:
打表后处理,不然肯定超时。简单还是很简单的。
B题一般暴力+前缀和这类基础一定能做了。
希望自己记住,不要总是乱想。
代码:
#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e5 + 10;
typedef long long ll;
char a[maxn];
ll sum[maxn];
int main() {
int n, q;
cin >> n >> q;
for (int i = 1; i <= n; i++)
cin >> a[i];
for (int i = 1; i <= n; i++) {
sum[i] = sum[i - 1] + (a[i] - 'a' + 1);
}
//前缀和
while (q--) {
int l, r;
cin >> l >> r;
cout << sum[r] - sum[l - 1] << '\n';
}
return 0;
}