您的位置:首页 > 其它

POJ1064-Cable master

2016-07-22 19:59 344 查看
题目出的也是十分的坑。

数据范围从1meter到100kilometers....

解题的思路大致就是二分搜索,次数大概在100次左右。

答案输出需要floor(ans*100)/100来避免最后答案四舍五入。

#include <cstdio>
#include <cmath>

const int maxn = 10000;

double cab[maxn];

bool judge(double a, int n, int k) {
int ans = 0;
for (int i = 0; i < n; i++) {
ans += floor(cab[i] / a);
}
return ans >= k;
}

int main(int argc, char const *argv[]) {
int n, k;
scanf("%d%d", &n, &k);
for (int i = 0; i < n; i++) {
scanf("%lf", &cab[i]);
}
double left = 0;
double right = 100000;
double ans = 0;
for (int i = 0; i < 100; i++) {
double mid = (left + right) / 2.0;
ans = mid;
if (judge(ans, n, k)) {
left = mid;
} else {
right = mid;
}
}
printf("%.2f\n", floor(ans*100)/100);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: