PKU 1064 Cable Master
2分探索
#include<iostream> #include<cstdio> #include<math.h> using namespace std; int n,k; double l[10000]; bool C(double x){ int cnt = 0; for(int i = 0; i < n;i++){ cnt += (int)(l[i] / x); } return cnt >= k; } int main(){ scanf("%d %d",&n,&k); for(int i = 0; i < n; i++){ scanf("%lf", &l[i]); } double lb = 0, ub = INT_MAX; for(int i = 0; i < 100; i++){ double mid = (lb + ub) / 2; if(C(mid)) lb = mid; else ub = mid; } printf("%.2f\n", floor(ub * 100) / 100); return 0; }