POJ 1064---二分搜索法
2024-09-04 10:09:25
///2.假定一个解并判断是否可行
///POJ1064
/**
Q:有N条绳子,长度分别为Li,从中切割出k条长度相同的绳子,
这K条绳子最长能有多长?保留两位小数
A:
二分搜索模型。
条件C(x):=可以得到K条长度为x的绳子
问题转变为 求满足C(x)的最大x;lb=0 ub=INF
问题转变为 如何高效的判断C(x) 1.二分搜索模型:在求最优解问题上的应用
“求满足条件C(x)的最小x”->若所有的x'>=x也满足C(x),则可用二分搜索来解决 */ #include"iostream"
#include "cstdio"
#include "cmath"
using namespace std; #define MAX 100010
#define INF 0x3f3f3f3f
int N,K;
double L[MAX];
bool C(double x)
{
int num=;
for(int i=;i<N;i++)
{
num+=(int)(L[i]/x);
}
return num>=K;
}
void solve()
{
///初始化解的范围
double lb=0.0,ub=INF; ///重复循环,直到解的范围足够小
for(int i=;i<=;i++)
{
double mid=(lb+ub)/;
if(C(mid))
lb=mid;///长度还可以大点
else
ub=mid;
}
printf("%.2f\n",floor(ub*)/);///保留两位小数处理,ub代表最大符合
} int main()
{
while(~scanf("%d%d",&N,&K))
{
for(int i=;i<N;i++)
{
scanf("%lf",&L[i]);
}
solve();
}
return ;
}
/**
4 11
8.02
7.43
4.57
5.39
Sample Output 2.00
*/
最新文章
- edghasdz
- ios 真机调试 could not find Developer Disk Image
- 记、基于react-router的单页应用
- (原)Java初始化过程
- bootstrap-dropdown
- Java实习生面试总结
- 你或许不了解的C++函数调用(1)
- php读取excel文件 更新修改excel
- -webkit-appearance: none;去处select默认小箭头样式
- jqgrid使用sql row_number进行分页
- 【转】	UIView如何管理它的子视图
- 数组在C++和java中的区别
- hbase port
- angularjs 怎么获取鼠标焦点 鼠标移入显示浮动的div提示框
- error: ModuleNotFoundError: No module named &#39;ConfigParser&#39;
- nginx 安装问题
- spring初识
- 初试GH-OST(转)
- 整数中1出现的次数(1~n)
- linux 3.10 tcp的accept测试