5.8
洛谷P1577 切绳子
和木材加工相同的题,这是绳长变成了浮点类型,处理起来麻烦了一点。
当然因为结果保留两位,所以可以在输入绳长时*100,最后答案/100 就好。
#include<iostream>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
int n,k;
double q[10010];
bool check(double x){
int sum=0;
for(int i=0;i<n;i++)
sum+=q[i]/x;
return sum>=k;
}
int main()
{
cin>>n>>k;
for(int i=0;i<n;i++)
cin>>q[i];
double l=0,r=100000000;//r尽量开大点
for(int i=0;i<100;i++){
double mid=(l+r)/2;
if(check(mid))
l=mid;
else
r=mid;
}
printf("%.2lf",floor(l*100)/100); //floor(m*100)/100:让m保留两位小数,
//提高精度
return 0;
}