二分法的应用:POJ1064 Cable master
/*
POJ1064 Cable master 时间限制: 1000MS 内存限制: 10000K
提交总数: 58217 接受: 12146
描述 Wonderland的居民已经决定举办地区性编程比赛。评委会自愿并承诺举办有史以来最诚实的比赛。决定使用“星形”拓扑结构为参赛者连接计算机 - 即将它们全部连接到单个中央集线器。为了组织一场真正诚实的比赛,评审委员会负责人决定将所有参赛选手均匀地放在距离该比赛中心的地方。
为了购买网线,评审委员会联系了当地的网络解决方案供应商,要求为他们出售具有相同长度的特定数量的电缆。评审委员会希望电缆尽可能长地让参赛者尽可能远离彼此。
公司的Cable Master被分配到该任务。他知道长达一厘米的股票中的每根电缆的长度,并且他可以以厘米精度切割它们,告诉他必须切割的碎片的长度。然而,这一次,这个长度还不知道,而且有线电视大师完全不解。
您需要编写一个程序来帮助Cable Master,该程序将确定可从电缆中切断的电缆段的最大可能长度,以获得指定数量的段。
输入 输入文件的第一行包含两个整数n和k,用空格分隔。N(1 = N = 10000)是库存中的电缆数量,K(1 = K = 10000)是请求数量。第一行后面是N行,每行一个数字,以米为单位指定库存中每条电缆的长度。所有电缆长度至少1米,最长100公里。输入文件中的所有长度都以厘米精度写入,精确到小数点后两位数字。
产量 在输出文件中写出Cable Master可能从电缆中切断的部件的最大长度(以米为单位)以获取所需数量的部件。数字必须以厘米精度写入,精确到小数点后两位数字。
如果无法削减所请求的每件至少一厘米长的件数,则输出文件必须包含单个数字“0.00”(不含引号)。
示例输入 4 11
8.02
7.43
4.57
5.39
示例输出 2.00 来源 东北欧洲2001
*/ import java.util.Scanner; public class Main {
static int N, K;
static double[] a; public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
N = sc.nextInt();
K = sc.nextInt();
a = new double[N];
for (int i = 0; i < N; i++)
a[i] = sc.nextDouble();
sc.close();
double low = -1, high = 100001;
while (high - low > 0.001) {
double mid = (low + high) / 2;
if (C(mid)) {
low = mid;
} else {
high = mid;
}
}
if (high < 0.01)
System.out.println("0.00");
else
System.out.println(String.format("%.2f", (int) (high * 100) / 100.0));
} static boolean C(double X) {
int count = 0;
for (int i = 0; i < N; i++)
count = count + (int) (a[i] / X);
return count >= K;
}
}
二分法的应用:POJ1064 Cable master的更多相关文章
- poj1064 Cable master(二分)
Cable master 求电缆的最大长度(二分法) Description Inhabitants of the Wonderland have decided to hold a region ...
- poj1064 Cable master
Description Inhabitants of the Wonderland have decided to hold a regional programming contest. The J ...
- poj1064 Cable master(二分查找,精度)
https://vjudge.net/problem/POJ-1064 二分就相当于不停地折半试. C++AC,G++WA不知为何,有人说C函数ans那里爆int了,改了之后也没什么用. #inclu ...
- POJ1064 Cable master 【二分找最大值】
题目:题目太长了! https://vjudge.net/problem/POJ-1064 题意分析:给了你N根长度为小数形式的棍子,再给出了你需要分的棍子的数量K,但要求你这K根棍子的长度必须是一样 ...
- POJ1064 Cable master(二分 浮点误差)
题目链接:传送门 题目大意: 给出n根长度为1-1e5的电线,想要从中切割出k段等长的部分(不可拼接),问这个k段等长的电线最长可以是多长(保留两位小数向下取整). 思路: 很裸的题意,二分答案即可. ...
- POJ 1064 Cable master (二分法+精度控制)
Cable master Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 65358 Accepted: 13453 De ...
- hdu 1551 Cable master (二分法)
Cable master Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Tota ...
- Cable master 求电缆的最大长度(二分法)
Description Inhabitants of the Wonderland have decided to hold a regional programming contest. The J ...
- 【POJ - 1064】Cable master(二分)
Cable master Descriptions 输入2个数 N K n条绳子 要分成大于等于k段 求每段最长多长呢?并且每段不能小于1cm 必须以厘米精度写入数字,小数点后正好是两位数.如 ...
随机推荐
- 项目实战-Gulp使用
引言 在工作中,经常会遇到要把文件合并和压缩等操作,我经历过下面的演进过程: 使用ajaxmin工具手动合并和压缩 使用Grunt合并和压缩 使用Gulp合并和压缩 这里不探讨Grunt和Gulp的优 ...
- mysql 100%占用的解决
早上客户反应,其网站无法访问,无限转圈 上服务器,查看磁盘空间df -h,内存使用率free -m,网络流量iftop均正常 然后使用top查看时,发现mysql的cpu使用率上升到200%. 解决过 ...
- jstl jsp long to date
jsp 页面中使用jstl el 将long转换为时间类型,并格式化输出 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" ...
- webpack引入全局jQuery
1.使用命令行npm install jquery来安装jQuery 2.在webpack.config.js文件里配置: plugins:[ new webpack.ProvidePlugin({ ...
- K8S 容器之间通讯方式
概述 首先k8s里面容器是存在于pod里面的,所以容器之间通讯,一般分为三种类型: 1. pod内部容器之间 2. pod 与 pod 容器之间 3. pod 访问service服务 pod内部容器之 ...
- list 链表
#include <list> #include <iostream> using std::list; /* 双向环状链表 //每一个结点 一个数据域 一个前驱指针 一个后驱 ...
- NX二次开发-基于MFC界面的NX对Excel读写操作(OLE方式(COM组件))
NX二次开发API里没有对EXCAL读写操作的相关函数,市面上有很多种方法去实现,比如UFUN调KF,ODBC,OLE(COM组件)等等.这里我是用的OLE(COM组件)方式去做的,这种在VC上创建的 ...
- 重新学习Mysql数据库4:Mysql索引实现原理和相关数据结构算法
本文转自互联网 本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutorial ...
- go routine
无缓冲 channel 是在多个 goroutine 之间同步很棒的工具. 当在 Go 中用 ch := make ( chan bool ) 创建 chennel 时,bool 型的 无缓冲 cha ...
- MProtect使用小计【三】 – 权限管理
说明 本篇简单的说一下怎么样使用的VMProtect的权限管理功能,使我们的程序拥有注册码的功能.只用的注册版的程序才能执行指定的函数. 同样这个功能VMProtect也有例子位置在:安装目录\VMP ...