1889 制铁棒(二分答案)

本文介绍了一个工厂问题,涉及n根长度精确到厘米的铁棒,需要切割成m根相同长度的铁棒。厂长目标是最大化这些铁棒的平均长度。题目要求考虑铁棒切割的精确性,并指出输入数据实际上是以毫米为单位。提供的输入样例展示了如何处理这个问题,并提示需要注意数值精度,避免使用double类型导致误差。
摘要由CSDN通过智能技术生成

工厂里面,有n根待加工的铁棒,长度以米为单位,精确到小数点后两位(即厘米),现在市场上需求量是m根相同长度的铁棒。现在厂长想把这n根铁棒进行切割,切割的时候要精确到厘米,比如说,原来铁棒是1.00米的,那么可以切成0.50和0.50的,但是不能切成0.499和0.501的。并且不能将两根铁棒拼成一根铁棒。现在厂长想知道切出来的m根铁棒最长能有多长。
输入
单组测试数据。
第一行给出两个整数n(1 <= n<= 10000)和m(1 <= m< = 10000)。
接下来n行给出原始铁棒的长度L[1],L[2],L[3],…,L[n] ,(1<=L[i]<=100,000)。以米为单位,精确到小数点后两位。
输出
输出一个小数表示答案,精确到小数点后两位。
输入样例

样例输入1
4 11
8.02
7.43
4.57
5.39
输出样例
样例输出1
2.00
坑点:虽说精准到厘米 实际是毫米 0.01
为了避免double 将其转换为int

#include<bits/stdc++.h>
using namespace std;
int n,m;
int a[100010],l,r=0,mid,temp,maxn=0;
double tmp;
int find(int x)
{
	int sum=0;
	for(int i=1;i<=n;i++)
	 sum+=a[i]/x;
	//cout<<sum<<endl;
	if(sum>=m)
	 return true;
	return 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值