切绳子题解(博客搬家)
题目
题目描述
有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;
}
切绳子题解(博客搬家)相关推荐
- 博客搬家了--这次搬进自己家的了,不过博客园的会定时更新!新家地址: http://blog.woshimaijia.com/...
博客搬家了--这次搬进自己家的了,不过博客园的会定时更新! 新家地址: http://blog.woshimaijia.com/ 博客园的博客很稳定,也是我很喜欢的地方 这里的文章我也会陆续更新的.. ...
- [导入]博客搬家了,呵呵
博客搬家了,呵呵,找到一个不错的程序,以后就不怕自己的博客打不开了,自己可管理服务器了,真的很高兴. 博客地址:www.wjk3.cn 文章来源:http://wangjikun3.bokee.com ...
- CentOS经常使用文件操作命令[百度博客搬家]
路径操作的CentOS经常使用命令 如今整理例如以下(百度博客搬家) cd pwd NO1. 显示当前路径 [root@rehat root]# pwd NO2. 返回用户主文件夹 [roo ...
- 博客搬家——从CSDN到博客园
前言 作为CSDN五年的老用户,现在不得不做出一个艰难的决定--博客搬家.原博客地址:http://blog.csdn.net/zouyujie1127/ 其实在博客园注册已经两年多了,只是因为大学时 ...
- 博客搬家到CSDN:http://blog.csdn.net/yeweiouyang
博客搬家到CSDN:http://blog.csdn.net/yeweiouyang 转载于:https://www.cnblogs.com/yewei/p/4012571.html
- CSDN博客搬家到WordPress
原文:http://blog.csdn.net/duyiwuer2009/article/details/8015213 CsdnBlogMover(CSDN博客搬家程序)发布 http://www. ...
- 【活动时间调整】博客搬家,有礼相送
邀请你身边的好基友将博客搬(同)到(步) CSDN 吧~ 推荐好友并搬家成功,你和你的好基友都将会获得 CSDN 定制礼品一份~ 搬家申请地址: http://blog.csdn.net/import ...
- 博客搬家系列(六)-爬取今日头条文章
博客搬家系列(六)-爬取今日头条文章 一.前情回顾 博客搬家系列(一)-简介:https://blog.csdn.net/rico_zhou/article/details/83619152 博客搬家 ...
- CSDN提供的博客搬家功能体验[持续跟踪]
因为各种原因,我们可能在不同的的地方写下博客,如何轻松实现"一文多载",往往很难. CSDN算是早期写博客的地方了,之后也尝试过其他博客工具,尝试过那么多之后,发现还CSDN总体还 ...
- 博客搬家至 utensil.github.io
博客搬家至 http://utensil.github.io/tech/ 本博客不再更新维护.
最新文章
- qt tableWidget 表格控件使用
- matlab常用命令参考
- python中frame用法_python操作dataFrame基本知识点
- linux的线程实验的实验结果,Linux线程qps测试
- java 读取word书签_Java 添加、读取、删除Word书签
- matlab安装配置vc出错,64位系统安装matlab出现mexopts.bat及出现缺少或无法安装c++ compilers 故障的解决办法.pdf...
- 2-1 gradle安装
- 某中学要对学校运动会进行计算机管理,2020年新编高职入学考试适应性试卷信息技术试卷定稿名师精品资料....
- js学习总结:DOM节点一(选择器,节点类型)
- 3项目里面全局用less变量 cli vue_vue-cli3全局载入scss变量或less变量配置
- python免费全套教程-python入门免费教程看这些就够了
- Python_模块_Day_
- 《MapReduce 2.0源码分析与编程实战》一1.2 大数据分析时代
- 把Matlab的p代码还原为可读的m代码的可能性
- Guideline 2.3.3 -- We noticed that your screenshots do not sufficiently reflect your app in use
- 程序员颈椎病康复指南
- Steering Behaviors
- 《功夫》“经典”台词
- layui tabel筛选列 记忆功能
- 吕本富:从平台经济到平台经济学
热门文章
- 数据分析中的运营指标——DAU、MAU、PCU、ARPU、KPI等
- SCI论文投稿全程邮件模板
- 暑假总结--新学期计划
- 软件公司,销售管理门道(七)销售协同
- UE4_UStruct 遍历
- Linux-Nacos-服务注册中心搭建
- java po vo bo是什么以及_JAVA中(PO,VO,TO,BO,DAO,POJO)分别是指什么
- 北工大计算机网络95分复习——【第四章 介质访问控制子层】
- 《嵌入式系统 - RT-Thread开发笔记》 第三部分 RT-Thread 移植与设备驱动开发 - 第1章 RT-Thread 开发环境搭建 (Ubuntu)
- 如何从 FastReport VCL 中将报表导出为PNG格式?