一道二分题目
二分线缆长度
然后判断能否实现就行了
#include <cstdio> #include <cstring> #include <iostream> #include <algorithm> using namespace std; inline int read(){ int x=0,f=1,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; } int n,m; int a[10005]; inline bool ok(int x){ int res=0; for(int i=1;i<=n;i++) res+=a[i]/x; if(res>=m) return 1; return 0; } int main(){ while(scanf("%d %d",&n,&m)!=EOF){ for(int i=1;i<=n;i++) a[i]=read()*100,a[i]+=read(); int l=0,r=0; for(int i=1;i<=n;i++) r=max(r,a[i]); while(l<r){ int mid=(l+r)>>1; if(ok(mid+1)) l=mid+1; else r=mid; } printf("%d.%02d\n",l/100,l%100); } return 0; }