80分求助

P3853 [TJOI2007] 路标设置

@[Hachieve](/user/244294) ```cpp #include<cstdio> #include<algorithm> using namespace std; const int N=1e5+5; int L,n,k; int a[N]; int read(){ int x=0,f=1; char ch=getchar(); while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();} while(ch>='0'&&ch<='9') x=x*10+ch-'0',ch=getchar(); return x*f; } bool check(int dis){ int num=0; for(int i=2;i<=n;++i){ if( (a[i]-a[i-1]) <= dis)continue; if((a[i]-a[i-1])/dis*dis==(a[i]-a[i-1])) num+=((a[i]-a[i-1])/(dis+1));// else num+=(a[i]-a[i-1])/dis; if(num>k)return 0; } // printf("[%d %d]\n",dis,num); return 1; } int main(){ L=read(),n=read(),k=read(); for(int i=1;i<=n;++i) a[i]=read(); sort(a+1,a+1+n); int l=1,r=2*L; int mid; while(l<r){ mid=(l+r)/2; if(check(mid)) r=mid; else l=mid+1; // printf("%d %d\n",l,r); } printf("%d\n",(l+r)/2); return 0; } ```
by A1438329629 @ 2023-06-21 15:48:54


@[A1438329629](/user/583276) 谢谢
by __Chtholly @ 2023-06-21 17:15:41


|