求助
查看原帖
求助
378915
zhoujiefu楼主2023/12/25 18:11

为什么第一个代码能AC而第二个不行呢?第一个是+1,第二个是-1。我看别人写的都是加一。 不明白为什么

#include<bits/stdc++.h>
using namespace std;
int main(){
	int n,cnt=0,maxd=1e9,ans=0;
	string s;
	cin>>n>>s;
	for(int i=0;i<n;i++){
		if(s[i]=='1'){
			cnt=0;
			int left=i;
			while(s[i]=='1'){
				cnt++;
				i++;
			}
			if(i==n||left==0) maxd=min(maxd,cnt);
			else maxd=min(maxd,(cnt+1)/2);
		}
	}
	for(int i=0;i<n;i++){
		if(s[i]=='1'){
			cnt=0;
			while(s[i]=='1'){
				cnt++;
				i++;
			}
			ans+=ceil((1.0*cnt)/(2*maxd-1));
		}
	}
	cout<<ans;
	return 0;
}
#include<bits/stdc++.h>
using namespace std;
int main(){
	int n,cnt=0,maxd=1e9,ans=0;
	string s;
	cin>>n>>s;
	for(int i=0;i<n;i++){
		if(s[i]=='1'){
			cnt=0;
			int left=i;
			while(s[i]=='1'){
				cnt++;
				i++;
			}
			if(i==n||left==0) maxd=min(maxd,cnt);
			else maxd=min(maxd,(cnt+1)/2);
		}
	}
	for(int i=0;i<n;i++){
		if(s[i]=='1'){
			cnt=0;
			while(s[i]=='1'){
				cnt++;
				i++;
			}
			ans+=ceil((1.0*cnt)/(2*maxd+1));
		}
	}
	cout<<ans;
	return 0;
}
2023/12/25 18:11
加载中...