题目链接:http://poj.org/problem?id=1064
题意:有n条绳子,长度为Li,现在从这n条绳子中切割出K条相等的绳子,问切割出来的这k条绳子的最大长度为多少;
二分判断即可;
但是本题的精度让人恶心;
#include<iostream>
#include<algorithm>
#include<string.h>
#include<stdio.h>
#include<math.h>
using namespace std;
#define INF 0x3f3f3f3f
#define N 100550
#define PI 4*atan(1.0)
#define mod 10119
#define met(a, b) memset(a, b, sizeof(a))
typedef long long LL; int n, K;
double a[N]; bool Judge(double Mid)
{
int sum = ;
for(int i=; i<=n; i++)
sum += (int)(a[i]/Mid);
return sum>=K;
} int main()
{
while(scanf("%d %d", &n, &K)!=EOF)
{
for(int i=; i<=n; i++)
scanf("%lf", &a[i]); sort(a+, a+n+); double L = , R = a[n], ans = a[n]; while(R-L > 1e-)
{
double Mid = (L+R)/;
if(Judge(Mid))
L = Mid;
else
R = Mid;
}
printf("%.2f\n", floor(R*)/);///L会错;
}
return ;
}