标签: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; }
思考: 我知道这是二分啊.....但是, 但是, 我又写搓了! 然后调了好久, 删了重写过了.....迷, 今天下午面试啊, fighting!
标签:ret mat none poj std 多少 bool closed 链接
原文地址:http://www.cnblogs.com/FriskyPuppy/p/7484032.html