题目:
给n个长度为l[i](浮点数)的绳子,要分成k份相同长度的
问最多多长
题解:
二分长度,控制循环次数来控制精度,输出也要控制精度<wa了好多次>
#include<cstdio> #include<algorithm> #include<cstring> #include<cmath> #define N 10010 using namespace std; double L[N],l,r,mid; long long n,k; //yjjsb bool check(double lim) { int ret=0; for (int i=1;i<=n;i++) ret+=int(floor(L[i]/lim)); return ret>=k; } int main() { scanf("%lld%lld",&n,&k); for (int i=1;i<=n;i++) scanf("%lf",&L[i]),r+=2*L[i]; for (int i=1;i<=100;i++) { mid=(l+r)/2; if (check(mid)) l=mid; else r=mid; } printf("%.2f",floor(r*100)/100); return 0; }