二分法的应用: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 必须以厘米精度写入数字,小数点后正好是两位数.如 ...
随机推荐
- 检查目录下 文件的权限-linux shell脚本
#!/bin/bash #History: #2019/07/23 Fsq #This Program will check Permissions on dir PATH=/bin:/sbin ...
- Sed的查,删,增,改
sed的查,删,增,改 1.sed的查找 2.sed的删除 3.sed的上下左右增加文件内容 4.sed的改
- 【JS学习】慕课网4-1编程挑战 函数
要求:小伙伴们,请编写"改变颜色"."改变宽高"."隐藏内容"."显示内容"."取消设置"的函数,点 ...
- vue之路由导航守卫-全局前置守卫
一.使用方式 全局前置守卫用于在路由配置生效之前进行一些动作,可以使用 router.beforeEach 注册一个全局前置守卫: const router = new VueRouter({ ... ...
- js 循环json
var json= { "Type": "Coding", "Height":100 }; for (var key in json) { ...
- TCP协议解析及相关问题
TCP协议是什么: TCP是一种传输控制层的协议(TCP,Transmission Control Protocol)是为了在不可靠的互联网络上提供可靠的端到端字节流而专门设计的一个传输协议.也就是要 ...
- Delphi 鼠标控制函数GetCursorPos、SetCursorPos
GetCursorPos函数 获取鼠标的位置 var P: TPoint; begin GetCursorPos(P); //获取鼠标位置 end; SetCursorPos函数 设置鼠标的位置 v ...
- 安全检测及分析神器—AppScan使用教程
最近项目准备验收,所以最近在做项目验收的准备工作:我们公司规定,项目的安全检测必须通过才能进行项目验收:公司的安全部门用的检测软件就是大名鼎鼎的IBM Rational Appscan;在教由安全部门 ...
- [CQOI2011]放棋子 题解(dp+组合数学)
Description Input 输入第一行为两个整数n, m, c,即行数.列数和棋子的颜色数. 第二行包含c个正整数,即每个颜色的棋子数. 所有颜色的棋子总数保证不超过nm. N,M<=3 ...
- 其它课程中的python---6、python读取数据
其它课程中的python---6.python读取数据 一.总结 一句话总结: 记常用和特例:慢慢慢慢的就熟了,不用太着急,慢慢来 库的使用都很简单:就是库的常用函数就这几个,后面用的时候学都来得及. ...