怎么判断答案在哪里

P3853 [TJOI2007] 路标设置

这种二分写法经常会出问题,你自己考虑边界啊。
by 聊机 @ 2023-10-12 12:14:49


如果 mid 合法的话,更新答案。
by Creeper_l @ 2023-10-12 12:23:58


~~check函数可能出了点问题~~ ```cpp #include<iostream> using namespace std; int L,N,K,a[100010],l,r,ans,mid; bool check(int x){ int len=0,s=K; for(int i=1;i<N;i++){ if(s<0)break; if(a[i]-len<=x)len=a[i]; else len+=x,s--,i--; } return s>=0; } int main(){ scanf("%d%d%d",&L,&N,&K); for(int i=0;i<N;i++)scanf("%d",&a[i]); l=0,r=L; while(l<=r){ mid=(l+r)/2; if(check(mid))ans=mid,r=mid-1; else l=mid+1; } printf("%d",ans); return 0; } ```
by dangerous_DZR @ 2023-10-12 12:57:00


@20120326Dzr哦 谢谢
by _8008008 @ 2023-10-12 13:00:07


|