本文共 594 字,大约阅读时间需要 1 分钟。
题意:有N条绳子,它们的长度分别为Li。如果从它们中切割出K条长度相同的绳子,试问这K条绳子最长为多长?
算法:枚举+二分搜索#include#include using namespace std;int N, K;double d[10001];bool check(double x){ int num = 0; for (int i=0; i = K;}void solve(double left, double right){ // 2^(-100) 约等于 10^(-30) for (int i=0; i<100; i++) { double mid = (left+right)/2; if (check(mid)) { left = mid; } else { right = mid; } } printf("%.2f\n",floor(right*100)/100);}int main(){ cin >> N >> K; double right = 0; for (int i=0; i > d[i]; right += d[i]; } // 可分割的绳子长度,最小为0,最大为right/K,使用二分法搜索之。 solve(0,right/K);}
转载地址:http://uglbb.baihongyu.com/