#include<bits/stdc++.h>
using namespace std;
#define int long long
#define endl '\n'
#define inf 1e18
const int mod=1e9+7;
const int N=2e5+5;
int n,m,s1[N],s2[N],s3[N];
char ch[N];
void solve(){
cin>>n>>m;
for(int i=1;i<=n;i++){
cin>>ch[i];
if(ch[i]=='r') s1[i]=s1[i-1]+1;
else s1[i]=s1[i-1];
if(ch[i]=='e') s2[i]=s2[i-1]+1;
else s2[i]=s2[i-1];
if(ch[i]=='d') s3[i]=s3[i-1]+1;
else s3[i]=s3[i-1];
}
while(m--){
int x,y;
cin>>x>>y;
int t=y-x+1;
if(t<3){
cout<<0<<endl;
continue;
}
int a,b,c;
if(t%3==0){
int ans=0,p=t/3;
ans+=p-s1[x+p-1]+s1[x-1];
ans+=p-s2[x+2*p-1]+s2[x+p-1];
ans+=p-s3[x+3*p-1]+s3[x+2*p-1];
cout<<ans<<endl;
}
else if(t%3==1){
int ans=inf,p=t/3;
int cnt=0;
cnt+=p-s1[x+p-1]+s1[x-1];
cnt+=p-s2[x+2*p-1]+s2[x+p-1];
cnt+=p+1-s3[x+3*p]+s3[x+2*p-1];
ans=min(ans,cnt);
cnt=0;
cnt+=p+1-s1[x+p]+s1[x-1];
cnt+=p-s2[x+2*p]+s2[x+p];
cnt+=p-s3[x+3*p]+s3[x+2*p];
ans=min(ans,cnt);
cnt=0;
cnt+=p-s1[x+p-1]+s1[x-1];
cnt+=p+1-s2[x+2*p]+s2[x+p-1];
cnt+=p-s3[x+3*p]+s3[x+2*p];
cout<<min(ans,cnt)<<endl;
}
else{
int ans=inf,p=t/3;
int cnt=0;
cnt+=p+1-s1[x+p]+s1[x-1];
cnt+=p+1-s2[x+2*p+1]+-s2[x+p];
cnt+=p-s3[x+3*p+1]+s3[x+2*p+1];
ans=min(ans,cnt);
cnt=0;
cnt+=p+1-s1[x+p]+s1[x-1];
cnt+=p-s2[x+2*p]+s2[x+p];
cnt+=p+1-s3[x+3*p+1]+s3[x+2*p];
ans=min(ans,cnt);
cnt=0;
cnt+=p-s1[x+p-1]+s1[x-1];
cnt+=p+1-s2[x+2*p]+s2[x+p-1];
cnt+=p+1-s3[x+3*p+1]+s3[x+2*p];
cout<<min(ans,cnt)<<endl;
}
}
}
signed main(){
// ios::sync_with_stdio(false);
// cin.tie(nullptr);
// cout.tie(nullptr);
int tt=1;
// cin>>tt;
while(tt--) solve();
return 0;
}
小红的好串(前缀和&枚举)--牛客周赛 Round 41-D
最新推荐文章于 2024-07-25 21:11:40 发布