求助,不知道自己咋改对的
查看原帖
求助,不知道自己咋改对的
838324
inari1楼主2023/3/5 00:19

emmm虽然没过hack,其他都过了 就改了两个小点,不改就全wa,改了才对 思路和题解差不多...我是算的相反的情况,就是满足情况就+1,多于路标数返回true,求助为啥这样改能基本全对呢

#include <bits/stdc++.h>
using namespace std;
long long ll,n,k,w,a[10000001];
bool p(long long d){
    int y=0,b=0;
    for(int i=1;i<n;i++){
    	if(a[i]-b>d){ 
    		b=b+d;
    		i--;
    		y++;
		}
		else{
			b=a[i];
		}
	}
	return y>k;//这里从y>=k改成了y>k
}
int main(){
    cin>>ll>>n>>k;
    for(int i=0;i<n;i++)
    	cin>>a[i];
	sort(a,a+n);
    long long l=0,r=ll,mid,ans;
    while(l<=r){
        mid=l+(r-l)/2;
        if(p(mid))
           l=mid+1;
        else 
            ans=mid,r=mid-1;
    }//这里把ans=mid从if中移到了else中
    cout<<ans;
    return 0;
}
2023/3/5 00:19
加载中...