题解
2025-12-06 17:36:29
发布于:福建
1阅读
0回复
0点赞
#include<iostream>
#include<string>
#include<vector>
using namespace std;
int main(){
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int n,q;
string s;
cin>>n>>q>>s;
vector<int> ac(n+1,0);
// 标记所有"AC"出现的位置
for(int i=0;i<n-1;i++){
if(s[i]=='A'&&s[i+1]=='C'){
ac[i+1]=1; // 位置i+1对应原字符串的第i个位置(1-based)
}
}
// 构建前缀和
vector<int> pre(n+1,0);
for(int i=1;i<=n;i++){
pre[i]=pre[i-1]+ac[i];
}
// 处理查询
while(q--){
int l,r;
cin>>l>>r;
// AC出现在位置i需要满足:l ≤ i ≤ r-1
cout<<pre[r-1]-pre[l-1]<<'\n';
}
return 0;
}
全部评论 1
#include<iostream>
#include<string>
#include<vector>
using namespace std;
int main(){
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);int n,q; string s; cin>>n>>q>>s; vector<int> ac(n+1,0); // 标记所有"AC"出现的位置 for(int i=0;i<n-1;i++){ if(s[i]=='A'&&s[i+1]=='C'){ ac[i+1]=1; // 位置i+1对应原字符串的第i个位置(1-based) } } // 构建前缀和 vector<int> pre(n+1,0); for(int i=1;i<=n;i++){ pre[i]=pre[i-1]+ac[i]; } // 处理查询 while(q--){ int l,r; cin>>l>>r; // AC出现在位置i需要满足:l ≤ i ≤ r-1 cout<<pre[r-1]-pre[l-1]<<'\n'; } return 0;}
1周前 来自 福建
0

有帮助,赞一个