poj 1064 Cable master
2013-10-16 16:43
330 查看
链接:http://poj.org/problem?id=1064
大致题意:有N条(cable),和它们各自的长度,把它们分割成K条长度相同的小绳子,每段最长可以为多少。
枚举,但是以0.001的单位增加必然超时,可以用二分查找来加快枚举
需要注意的是:精度,用地板函数来防止进位
大致题意:有N条(cable),和它们各自的长度,把它们分割成K条长度相同的小绳子,每段最长可以为多少。
枚举,但是以0.001的单位增加必然超时,可以用二分查找来加快枚举
需要注意的是:精度,用地板函数来防止进位
#include<iostream> using namespace std; #define maxn 10000+5 int n,k; double len[maxn]; bool j(double h) { int sum=0; for(int a=0;a<n;a++) { sum=sum+(int)(len[a]/h); } if(sum>=k)//错点:一开始写的是sum==k...... return true; return false; } double floor(double a) { int b=a; return (double)b; } int main() { int a; double l,r,mid,inf; while(scanf("%d%d",&n,&k)!=EOF) { inf=0; for(a=0;a<n;a++) { scanf("%lf",&len[a]); if(inf<len[a]) inf=len[a]; } l=0,r=inf; for(a=0;a<50;a++)//枚举最长长度,可加大二分的次数,使结果更精确 { mid=(r+l)/2; if(j(mid)) l=mid; else r=mid; } printf("%.2lf\n",floor(r*100)/100);//防止进位,二分次数够的话r或者l都行 } return 0; }
相关文章推荐
- POJ1064_Cable master_二分
- poj 1064 cable master (分绳子)二分求最大值
- POJ(1064)cable master
- POJ 1064 Cable master
- poj 1064 Cable master
- POJ1064 Cable master[二分]
- POJ1064 Cable master
- poj 1064 Cable master - 二分查找
- poj1064 Cable master(二分)
- POJ 1064 Cable master(二分求可行解)
- POJ 1064 Cable master(二分查找 求近似解)
- POJ 1064 Cable master(初遇二分)
- poj 1064 cable master (分绳子)二分求最大值
- POJ1064 Cable master(二分,精度控制)
- poj 1064 Cable master(二分)
- POJ - 1064 Cable master
- poj 1064 Cable master【二分】
- POJ1064 Cable master(二分)
- poj 1064 cable master (分绳子)二分求最大值
- POJ 1064 Cable master 二分答案