首页 分享 木材加工——二分答案

木材加工——二分答案

来源:花匠小妙招 时间:2024-12-18 14:52

木材加工——二分答案

最新推荐文章于 2024-12-17 17:11:39 发布

OLDERHARD 于 2023-12-08 10:40:17 发布

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

木材厂有 n 根原木,现在想把这些木头切割成 k 段长度均为 l 的小段木头(木头有可能有剩余)。

当然,我们希望得到的小段木头越长越好,请求出 l 的最大值。

木头长度的单位是 cm,原木的长度都是正整数,我们要求切割得到的小段木头的长度也是正整数。

例如有两根原木长度分别为 11cm 和 21cm,要求切割成等长的 6 段,很明显能切割出来的小段木头长度最长为 5cm。

输入格式

第一行是两个正整数 n,k,分别表示原木的数量,需要得到的小段的数量。

接下来 n 行,每行一个正整数 ai,表示一根原木的长度。

 输出格式

仅一行,即 l 的最大值。

如果连 1cm 长的小段都切不出来,输出 `0`。

样例输入 
3 7
232
124
456

样例输出 
114

提示

对于 100% 的数据,有 1<= n <= 10^5,1<= k <= 10^8,1<= ai <=10^8。

#include <bits/stdc++.h>

using namespace std;

#define int long long

#define ios ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);

typedef pair<int,int> PII;

const int N=1e6+10;

int a[N];

signed main()

{

int n,k;

cin>>n>>k;

int h=0;

for (int i=0;i<n;i++)

{

cin>>a[i];

h=max(h,a[i]);

}

int l=0;

while (l<h)

{

int ans=0; //记录当前选择mid为切割长度所裁成小段木头的个数

int mid=l+h+1>>1;

for (int i=0;i<n;i++) ans +=a[i]/mid;

if (ans>=k) l=mid;

else h=mid-1;

}

cout<<l<<endl;

return 0;

}

相关知识

二分答案——木材加工(洛谷 P2440)
2024年木材加工行业发展现状、竞争格局及未来发展趋势与前景分析
木材价格
“木材”字的解释
木材的环保与碳汇效应考核试卷.docx
攀枝花市开展木材市场联合检疫执法检查
云杉木是什么木材
废木材粉碎哪里回收
木材的虫害及其预防和控制
常用的花园景观木材有哪些

网址: 木材加工——二分答案 https://www.huajiangbk.com/newsview1166256.html

所属分类:花卉
上一篇: 【广州木材加工及木竹藤棕草制品业
下一篇: 最重最硬的一种木材,硬如钢铁般,

推荐分享