题目

题目描述

有N条绳子,它们的长度分别为Li。如果从它们中切割出K条长度相同的绳子,这K条绳子每条最长能有多长?
答案保留到小数点后2位(直接舍掉2为后的小数)。

输入

第一行两个整数N和K,接下来N行,描述了每条绳子的长度Li。

输出

切割后每条绳子的最大长度。

样例输入

4 11
8.02
7.43
4.57
5.39

样例输出

2.00

提示

对于100%的数据 0<Li<=100000.00 0<n<=10000 0<k<=10000

分析题目

最近在做二分题解,作为一道经典的二分题,切绳子是一定要会的。
这道题与木材加工有些相似,但这里出现了浮点数,又要比木材加工复杂一些。
又因为它最多只有两个小数点,所以,我们可以直接把输入的数乘100,把浮点数变为整数就行了。
当然,输出时又要除100,再变为浮点数。

double ans=0;scanf("%d%d",&n,&k);for(int i=1;i<=n;i++){scanf("%lf",&a[i]);a[i]*=100;ans+=a[i];}

这里我用了一个特判,防止输出时输不出0.00。(我不写上去时WA了)

    if(ans*100<k){printf("0.00");return 0;}

进入正轨,开始二分。
二分怎么写知道吧?
左右两指针,取中点缩小范围。直到左指针大于等于右指针,得出答案。

int l=0,r=10000001; while(l<=r){m=(l+r)/2;  if(m==0) break;//这里又需要一个特判,不过可能没用,因为我前面已经特判0的情况了。if(js(m)) l=m+1;else r=m-1;}

再让我们看看函数 j s js js 中有些什么?

inline bool js(int x)
{long long t=0; for(register int i=1;i<=n;i++)t+=a[i]/x;return t>=k;
}

我们把每根绳子可以割出的段数累加,与要求段数比较,
如果符合条件,说明切割后每条绳子的最大长度可能大于当前中点的大小,将左指针移至中点再继续找下一个中点。
如果不符合条件,说明切割后每条绳子的最大长度可能小于当前中点的大小,将右指针移至中点再继续找下一个中点。

code

#include <bits/stdc++.h>
using namespace std;
double a[100001];
int sum;
int k,m,n;
inline bool js(int x)
{long long t=0; for(register int i=1;i<=n;i++)t+=a[i]/x;return t>=k;
}
int main()
{double ans=0;scanf("%d%d",&n,&k);for(int i=1;i<=n;i++){scanf("%lf",&a[i]);a[i]*=100;ans+=a[i];}if(ans*100<k){printf("0.00");return 0;}int l=0,r=10000001; while(l<=r){m=(l+r)/2;  if(m==0) break;if(js(m)) l=m+1;else r=m-1;}printf("%.2lf",(l-1)/100.0);return 0;
}

切绳子题解(博客搬家)相关推荐

  1. 博客搬家了--这次搬进自己家的了,不过博客园的会定时更新!新家地址: http://blog.woshimaijia.com/...

    博客搬家了--这次搬进自己家的了,不过博客园的会定时更新! 新家地址: http://blog.woshimaijia.com/ 博客园的博客很稳定,也是我很喜欢的地方 这里的文章我也会陆续更新的.. ...

  2. [导入]博客搬家了,呵呵

    博客搬家了,呵呵,找到一个不错的程序,以后就不怕自己的博客打不开了,自己可管理服务器了,真的很高兴. 博客地址:www.wjk3.cn 文章来源:http://wangjikun3.bokee.com ...

  3. CentOS经常使用文件操作命令[百度博客搬家]

    路径操作的CentOS经常使用命令 如今整理例如以下(百度博客搬家)  cd pwd  NO1. 显示当前路径  [root@rehat root]# pwd  NO2. 返回用户主文件夹  [roo ...

  4. 博客搬家——从CSDN到博客园

    前言 作为CSDN五年的老用户,现在不得不做出一个艰难的决定--博客搬家.原博客地址:http://blog.csdn.net/zouyujie1127/ 其实在博客园注册已经两年多了,只是因为大学时 ...

  5. 博客搬家到CSDN:http://blog.csdn.net/yeweiouyang

    博客搬家到CSDN:http://blog.csdn.net/yeweiouyang 转载于:https://www.cnblogs.com/yewei/p/4012571.html

  6. CSDN博客搬家到WordPress

    原文:http://blog.csdn.net/duyiwuer2009/article/details/8015213 CsdnBlogMover(CSDN博客搬家程序)发布 http://www. ...

  7. 【活动时间调整】博客搬家,有礼相送

    邀请你身边的好基友将博客搬(同)到(步) CSDN 吧~ 推荐好友并搬家成功,你和你的好基友都将会获得 CSDN 定制礼品一份~ 搬家申请地址: http://blog.csdn.net/import ...

  8. 博客搬家系列(六)-爬取今日头条文章

    博客搬家系列(六)-爬取今日头条文章 一.前情回顾 博客搬家系列(一)-简介:https://blog.csdn.net/rico_zhou/article/details/83619152 博客搬家 ...

  9. CSDN提供的博客搬家功能体验[持续跟踪]

    因为各种原因,我们可能在不同的的地方写下博客,如何轻松实现"一文多载",往往很难. CSDN算是早期写博客的地方了,之后也尝试过其他博客工具,尝试过那么多之后,发现还CSDN总体还 ...

  10. 博客搬家至 utensil.github.io

    博客搬家至 http://utensil.github.io/tech/ 本博客不再更新维护.

最新文章

  1. qt tableWidget 表格控件使用
  2. matlab常用命令参考
  3. python中frame用法_python操作dataFrame基本知识点
  4. linux的线程实验的实验结果,Linux线程qps测试
  5. java 读取word书签_Java 添加、读取、删除Word书签
  6. matlab安装配置vc出错,64位系统安装matlab出现mexopts.bat及出现缺少或无法安装c++ compilers 故障的解决办法.pdf...
  7. 2-1 gradle安装
  8. 某中学要对学校运动会进行计算机管理,2020年新编高职入学考试适应性试卷信息技术试卷定稿名师精品资料....
  9. js学习总结:DOM节点一(选择器,节点类型)
  10. 3项目里面全局用less变量 cli vue_vue-cli3全局载入scss变量或less变量配置
  11. python免费全套教程-python入门免费教程看这些就够了
  12. Python_模块_Day_
  13. 《MapReduce 2.0源码分析与编程实战》一1.2 大数据分析时代
  14. 把Matlab的p代码还原为可读的m代码的可能性
  15. Guideline 2.3.3 -- We noticed that your screenshots do not sufficiently reflect your app in use
  16. 程序员颈椎病康复指南
  17. Steering Behaviors
  18. 《功夫》“经典”台词
  19. layui tabel筛选列 记忆功能
  20. 吕本富:从平台经济到平台经济学

热门文章

  1. 数据分析中的运营指标——DAU、MAU、PCU、ARPU、KPI等
  2. SCI论文投稿全程邮件模板
  3. 暑假总结--新学期计划
  4. 软件公司,销售管理门道(七)销售协同
  5. UE4_UStruct 遍历
  6. Linux-Nacos-服务注册中心搭建
  7. java po vo bo是什么以及_JAVA中(PO,VO,TO,BO,DAO,POJO)分别是指什么
  8. 北工大计算机网络95分复习——【第四章 介质访问控制子层】
  9. 《嵌入式系统 - RT-Thread开发笔记》 第三部分 RT-Thread 移植与设备驱动开发 - 第1章 RT-Thread 开发环境搭建 (Ubuntu)
  10. 如何从 FastReport VCL 中将报表导出为PNG格式?