首页 > 其他分享 >04:网线主管

04:网线主管

时间:2023-03-05 18:57:03浏览次数:30  
标签:04 int sum 网线 主管 长度 数量

描述

仙境的居民们决定举办一场程序设计区域赛。裁判委员会完全由自愿组成,他们承诺要组织一次史上最公正的比赛。他们决定将选手的电脑用星形拓扑结构连接在一起,即将它们全部连到一个单一的中心服务器。为了组织这个完全公正的比赛,裁判委员会主席提出要将所有选手的电脑等距离地围绕在服务器周围放置。

为购买网线,裁判委员会联系了当地的一个网络解决方案提供商,要求能够提供一定数量的等长网线。裁判委员会希望网线越长越好,这样选手们之间的距离可以尽可能远一些。

该公司的网线主管承接了这个任务。他知道库存中每条网线的长度(精确到厘米),并且只要告诉他所需的网线长度(精确到厘米),他都能够完成对网线的切割工作。但是,这次,所需的网线长度并不知道,这让网线主管不知所措。

你需要编写一个程序,帮助网线主管确定一个最长的网线长度,并且按此长度对库存中的网线进行切割,能够得到指定数量的网线。

输入

第一行包含两个整数N和K,以单个空格隔开。N(1 <= N <= 10000)是库存中的网线数,K(1 <= K <= 10000)是需要的网线数量。接下来N行,每行一个数,为库存中每条网线的长度(单位:米)。所有网线的长度至少1m,至多100km。输入中的所有长度都精确到厘米,即保留到小数点后两位。

输出

网线主管能够从库存的网线中切出指定数量的网线的最长长度(单位:米)。必须精确到厘米,即保留到小数点后两位。若无法得到长度至少为1cm的指定数量的网线,则必须输出“0.00”(不包含引号)。

样例输入

4 11
8.02
7.43
4.57
5.39

样例输出

   2.00

题意解析

给出库存中的网线数量与需要的网线数量和每根网线的长度,求出网线主管能够从库存的网线中切出指定数量的网线的最长长度,输出时保留两位小数。

解题思路

我们可以使用二分查找的方法解决这道题。再利用while循环,求出在网线长度等于mid时,网线数量是否不足于指定数量,如果是则清零sum再次循环,如果不是则缩小网线长度,直至左端点与右端点之差小于一时停止循环。

代码解决

 

#include<bits/stdc++.h>
using namespace std;
int main(){
	double q;
	int n,k,a[10010],max1=0,sum;
	cin>>n>>k;//先输入库存中的网线数量与需要的网线数量
	for(int i=0;i<n;i++){
		cin>>q;//再输入每根网线的长度
		a[i]=q*100;//把米转换成厘米
		max1=max(max1,a[i]);
	}
	int l=0,r=max1+1,mid;
	while(r-l>1){//左端点与右端点之差小于一时停止循环
		mid=(l+r)/2;//求中间值
		sum=0;//清零sum
		for(int i=0;i<n;i++){
		  sum+=a[i]/mid;//sum的值为每次循环求出的网线数量
		}
		if(sum<k){//如果某次循环的网线数量小于需要的网线数量
			r=mid;//右端点等于中间值
		}
		else{//反之
			l=mid;//左端点等于中间值
		}
	}
	printf("%.2f",l/100.0);//
	return 0;
}

 

标签:04,int,sum,网线,主管,长度,数量
From: https://www.cnblogs.com/mnknjk/p/17181289.html

相关文章

  • Day04
    typora-copy-images-to:imgs复习1.索引:主要是提高查询性能。2.索引分类:主键索引唯一索引普通索引组合索引全文索引hash索引3.索引底层数据结构是b+tree.非叶子......
  • Day04.动态代理扩展
    16_代理模式:静态代理目标了解静态代理模式实现【了解】路径静态代理概述静态代理案例静态代理概述静态代理:是由程序员创建或工具生成代理类的源码,再......
  • ubuntu20.04部署Nessus pro 10.5.0
    下载nessus#curl--requestGET--url'https://www.tenable.com/downloads/api/v2/pages/nessus/files/Nessus-10.5.0-ubuntu1404_amd64.deb'--output'Nessus-10.5.0-......
  • day04(2023.3.4)
    1.类型自动转换2.强制转换已及强制转换会出现的问题 3.键盘输入 4.台球小项目  台球小项目运行截图: 5.台球所用的素材:  写了个小小的台球游戏,还......
  • 2023/03/04刷题
    C.AndrewandStones链接C.AndrewandStones这个题还是比较有意思的,每天再补A.Array链接A.Array这个题比较好做可以发现要想条件成立的话,必须存在一个0.所以......
  • 每日算法 230304
    每日算法230304题目982.按位与为零的三元组给你一个整数数组nums,返回其中按位与三元组的数目。按位与三元组是由下标(i,j,k)组成的三元组,并满足下述全部条......
  • ubuntu20.04部署Nessus Essentials 10.5
    下载nessus#curl--requestGET--url'https://www.tenable.com/downloads/api/v2/pages/nessus/files/Nessus-10.5.0-ubuntu1404_amd64.deb'--output'Nessus-10.5.0-......
  • day04 打卡24. 两两交换链表中的节点 19.删除链表的倒数第N个节点 142.环形链表II
    day04打卡24.两两交换链表中的节点19.删除链表的倒数第N个节点142.环形链表II24.两两交换链表中的节点24题目链接1.第一次想的思路:使用count记录当前是第几个节点,......
  • ubuntu 22.04 配置 samba 服务
     通过在ubuntu系统中安装samba,使得windows10 能访问安装在vmware中的ubuntu文件。sudoaptinstallsamba#编辑samba配置文件:sudovim/etc/samba/smb......
  • [Go语言tips04]二维数组与二维切片
    0.引言既然在Go语言中数组和切片同时存在并且是两个不同的类型,那当他们是二维时又会产生什么样的问题?因为数组和切片同时存在,在Go语言中二维的使用就会显得和别的语言很......