情歌

题目描述

每次小明准备唱歌,他会选取两个数l和r(l<r),他会将s中第l个字母~第r个字母拿出来。对于这个子串中的每个字母,他会重复吟唱k次,k为这个字母在字母表中的顺序。

例如,s=’abbcb’,小明选取了l=1,r=5。所以小明选取了子串’abbcb’,其中每个a都会重复1次,b重复2次,c重复3次,所以最后小明吟唱的字符串为’abbbbcccbb’,长度为10。

现在,给你字符串s,并且给你l和r,请你求出小明最后吟唱的字符串长度。

输入

第一行包含两个整数n和q(1≤n、q≤10 0000)-表示字符串s的长度和例子数。

第二行为长度n的字符串s,由小写字母组成。

接下来q行,每行两个整数l和r(1≤l≤r≤n),即选取的子串位置。

输出

q行,每行一个整数。

样例输入

7 3
abacaba
1 3
2 5
1 7

样例输出

4
7
11

提示

【输入输出样例】

输入

7 3

abacaba

1 3

2 5

1 7

7 4

abbabaa

1 3

5 7

6 6

2 4

13 7

sonoshikumiwo

1 5

2 10

7 7

1 13

4 8

2 5

3 9

输出

4

7

11

5

4

1

5

82

125

9

191

62

63

97

 

【提示】

对于第一个样例:

选取’aba’变成’abba‘。

选取’baca‘变成’bbaccca‘。

选取’abacaba‘变成’abbacccabba‘。

长度分别为4、7、11。

不是,这不枚举加buff就能过吗?

(所为的buff是O2+O3+....)

代码

#include <bits/stdc++.h>
#pragma GCC optimize("Ofast")
#pragma GCC optimize("O2")
#pragma GCC optimize("O3")
#pragma GCC optimize("O4")
#define ll long long
using namespace std;
ll n,m,i,x,y,ans,j;
char a[300005];
main(){
    ios::sync_with_stdio(false);
    cin.tie(NULL);cout.tie(NULL);
    cin>>n>>m>>a+1;
    for(i=1;i<=m;i++){
        cin>>x>>y;ans=0;
        for(j=x;j<=y;j++)
            ans+=(int(a[j]-96));//转换过程
        cout<<ans<<"\n";
    }
}

#include <bits/stdc++.h>
#pragma GCC optimize("Ofast")
#pragma GCC optimize("O2")
#pragma GCC optimize("O3")
#pragma GCC optimize("O4")
#define ll long long
using namespace std;
ll n,m,i,x,y,ans,j; 
char a[300005];
main(){
    ios::sync_with_stdio(false);
	cin.tie(NULL);cout.tie(NULL);
	cin>>n>>m>>a+1;
	for(i=1;i<=m;i++){
		cin>>x>>y;ans=0;
		for(j=x;j<=y;j++)
			ans+=(int(a[j]-96));//转换过程 
		cout<<ans<<"\n";
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值