POJ 1064 Cable master (二分)

来源:互联网 发布:情义我心知 编辑:程序博客网 时间:2024/06/06 01:16

题目链接:http://poj.org/problem?id=1064


题意:N条绳子,长度分别为Li。若从中切割出K条长度相同的绳子,这K条绳子每条最长能有多长。


二分查找,下界为0上界为最大的L,答案不能四舍五入。


用C++可以过,G++WA。。。为什么。。。


#include <iostream>#include <cstdio>#include <cstring>#include <cmath>#include <algorithm>#define eps 1e-6using namespace std;int n, k;double L[10010];int check(double x) {int cnt = 0;int i;for(i = 0; i < n; i++) {cnt += int(L[i] / x);}if(cnt >= k) return 1;else return 0;}int main() {scanf("%d %d", &n, &k);int i;double maxl = 0;for(i = 0; i < n; i++) {scanf("%lf", L + i);maxl = max(maxl, L[i]);}double l = 0, r = maxl;while(r - l > eps) {double mid = (l + r) / 2;if(check(mid)) l = mid;else r = mid;}printf("%.2lf\n", floor(r * 100) / 100);return 0;}


0 0