码迷,mamicode.com
首页 > 其他好文 > 详细

POJ 1064 Cable master 二分

时间:2017-09-06 14:40:52      阅读:150      评论:0      收藏:0      [点我收藏+]

标签:ret   mat   none   poj   std   多少   bool   closed   链接   

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

  题目描述: 问给出n段长度为a[i]的绳子,  要切成K段, 问每段最长是多少

  解题思路: 二分很容易想啊......

  代码: 

技术分享
#include <cstdio>
#include <cmath>
using namespace std;
const int maxn = 10005;
const double inf = 200005.0;
double a[maxn];
const double eps = 1e-5;
int n,k;
bool ok(double x) {
    int num = 0;
    for(int i = 0; i < n; i++)
        num += (int)(a[i]/x);
    return num >= k;
}
void solve() {
    double low = 0;
    double high = inf;
    while( high-low > eps ) {
        double mid = (high+low)*0.5;
        if( ok(mid)) low = mid;
        else high = mid;
    }
    printf( "%.2f\n", floor(high*100)/100 );
}
int main() {
    while( scanf( "%d%d", &n, &k ) == 2 ) {
        for( int i = 0; i < n; i++ ){
            scanf( "%lf", a+i );
        }
        solve();
    }
    return 0;
}
View Code

  思考: 我知道这是二分啊.....但是, 但是, 我又写搓了! 然后调了好久, 删了重写过了.....迷, 今天下午面试啊, fighting!

POJ 1064 Cable master 二分

标签:ret   mat   none   poj   std   多少   bool   closed   链接   

原文地址:http://www.cnblogs.com/FriskyPuppy/p/7484032.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!