关于D2T1的一些小问题
  • 板块学术版
  • 楼主Memory_Lin
  • 当前回复9
  • 已保存回复9
  • 发布时间2023/1/7 19:34
  • 上次更新2023/10/24 05:15:26
查看原帖
关于D2T1的一些小问题
705081
Memory_Lin楼主2023/1/7 19:34

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.询问关于出题组提供的模板怎么使用。

蒟蒻询问,感谢指导

2023/1/7 19:34
加载中...