Rt,以下是70pts的代码,其中最后一个测试点2.2s超时,已知是因为读入的问题。
#include<bits/stdc++.h>
using namespace std;
const int N=3e6+10;
string s;
int q,len,ans=1,ret;
int main()
{
scanf("%d",&q);
cin>>s;
len=s.length();
for(int i=1;i<=len;i++){
if(s[i]!=s[i-1]){
ans++;
}
}
printf("%d\n",ans/2);
for(int i=1;i<=q;i++){
int p;scanf("%d",&p);
char c;cin>>c;
if(p-2==-1 ||p==len){
if(s[p-1]!=s[p-2==-1?p:p-2]&&c==s[p-2==-1?p:p-2]) ans--;
else if(s[p-1]==s[p-2==-1?p:p-2]&&c!=s[p-2==-1?p:p-2]) ans++;
}
else if(s[p-2]==s[p]){
if(s[p-1]!=s[p]&&c==s[p]) ans-=2;
else if(s[p-1]==s[p]&&c!=s[p]) ans+=2;
}else{
if((s[p-1]==s[p-2]||s[p-1]==s[p])&&(c!=s[p-2]&&c!=s[p])) ans++;
else if((s[p-1]!=s[p-2]&&s[p-1]!=s[p])&&(c==s[p-2]||c==s[p])) ans--;
}
s[p-1]=c;
printf("%d\n",ans/2);
}
return 0;
}
求助各位大佬:
1.在本地测试时,发现若用scanf(“%c”,&c);读入,会发现死循环,RE的问题;若用scanf(“%s”,&c);或getchar()读入会发现与测试样例不符,故询问原因,以及对于字符字符串输入的方法(不使用cin)
2.询问关于出题组提供的模板怎么使用。
蒟蒻询问,感谢指导