为什么第一个代码能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;
}