题意:有N条绳子,它们的长度分别为Li。如果从它们中切割出K条长度相同的绳子的话,这K条绳子最长能有多长?答案保留到小数点后2位。

思路:这些最大最小化问题大多数可以用二分查找的方法来解题

   用 d 表示绳子最长可以为d,然后循环利用二分搜索使得中间值不断地缩小直到到达想要的精度

   就是

void solve()
{
int low=;
int high=INF;
for(int i=;i<;i++){
int mid=(low+high)/;
if (is_ok(mid)) low=mid;
else high=mid;
}
printf("%.2f\n",floor(high*)/);
}

下面是完整的代码

#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
int K,N;
const int INF=;
double line[];
bool is_ok(double x)//用来判断这个值是否能使条件成立
{
int num=;
for(int i=;i<N;i++)
{
num+=(int)(line[i]/x);
}
return num>=K;
}
void solve()
{
double low=;
double high=INF;
for(int i=;i<;i++)
{
/*
这个思想是二分查找,
这是利用二分查找不断地是条件精确到需要的地步
就像用100次的循环就是使mid的值不断地缩小
从而找出相对精确的中间值很巧妙
*/
double mid=(low+high)/;
if(is_ok(mid)) low=mid;
else high=mid;
}
printf("%.2f\n",floor(high*)/);
}
int main()
{
while(cin>>N>>K)
{
for(int i=;i<N;i++)
cin>>line[i];
solve();
}
return ;
}

最新文章

  1. 从HTML原型到jsp页面完美转型攻略(教你即使不会写代码也能弄出漂亮的网页)
  2. 15 BasicHashTable基本哈希表类(二)——Live555源码阅读(一)基本组件类
  3. ./configure会报错:pr command not found
  4. windows bat 文件
  5. Codeforces Round #243 (Div. 1) A题
  6. ASP.NET 之 常用类、方法的超级总结,并包含动态的EXCEL导入导出功能,奉上类库源码
  7. oracle slient静默安装并配置数据库及仅安装数据库不配置数据库shell
  8. lol盒子重点内容
  9. 5、sha1加密的一个坑
  10. Windows上mxnet实战深度学习:Neural Net
  11. Mac OS X版本的sublime text 3安装汇编语言语法支持
  12. app自动化测试Appium+python
  13. Qsort(c)_Sort(c++)用法
  14. 【问题集】redis集群set报错(error) MOVED 11469 192.168.181.201:7002
  15. numpy.ravel() vs numpy.flatten()
  16. 【linux命令总结】——后续用到的内容持续补充和更新
  17. achartengine刷新数据
  18. 『cs231n』作业3问题1选讲_通过代码理解RNN&amp;图像标注训练
  19. 第二部分 OpenStack安装与配置
  20. easyUI小技巧-纯干货

热门文章

  1. F. Clique in the Divisibility Graph DP
  2. final关键字,类的自动加载,命名空间
  3. 数据绑定以及Container.DataItem几种方式与用法分析
  4. Bootcamp Win10蓝牙鼠标的问题
  5. nodejs 实践:express 最佳实践(二) 中间件
  6. HBuilder 做移动端app流程
  7. 关于验证码在IE中不刷新的快速解决方法
  8. mysql主从设置windows
  9. iOS 学习随记 (一)
  10. 关于 NetBackup 应答文件(/tmp/NBInstallAnswer.conf)