首页 > 其他分享 >造海船(二分基础)

造海船(二分基础)

时间:2024-07-19 11:54:01浏览次数:8  
标签:二分 正整数 int 基础 mid 木头 原木 小段 海船

描述

明朝郑和下西洋,需要建造庞大的海船,需要足够的木料,因为那时候没有钢铁制造的船,现在有 n 根原木,现在想把这些木头切割成 k 段长度均为 l 的小段木头(木头有可能有剩余),用来制造船的部件。

当然,工匠希望得到的小段木头越长越好,这样可以让船更大一些不浪费木料,请求出 l 的最大值。

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

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

现在希望你能用现代科技可以帮助他们计算出来。

输入描述

第一行是两个正整数 n,k,分别表示原木的数量,需要得到的小段的数量。
接下来 n 行,每行一个正整数 Li,表示一根原木的长度。

输出描述

仅一行,即 l 的最大值。
如果连 1cm 长的小段都切不出来,输出 0

样例输入 1 

3 7
232
124
456

样例输出 1 

114

提示

数据规模与约定
对于 100% 的数据,有 1≤n≤105,1≤k≤108,1≤Li≤10^8(i∈[1,n])。

上代码!

#include<bits/stdc++.h>
using namespace std;
int a[100001];
int n,k;
int main(){
    cin>>n>>k;
    for(int i=1;i<=n;i++){
        cin>>a[i];
    }
    int l=1,r=1000000000;
    int ans = 0;
    while(l <= r){
        //z++;
        int  mid = (l+r)/2;            
        int cnt = 0;
        for(int i=1;i<=n;i++){
            cnt += a[i]/mid;
        }
        if(cnt>=k){
            ans = mid;
            l = mid+1;
        }else{ //ans<k
            r = mid-1;
        }
    }
    cout<<ans;
    return 0;
}

标签:二分,正整数,int,基础,mid,木头,原木,小段,海船
From: https://blog.csdn.net/2401_83736789/article/details/140545326

相关文章

  • 【算法设计与分析】期末考试复习 - 基础知识(基础知识超详细)
    文章目录前言引言问题问题描述实例目标数学表达步骤示例伪代码解释1.问题的复杂度冒泡排序笔记选择排序笔记插入排序笔记归并排序笔记快速排序笔记一些问题哪个排序算法效率最高?是否可以找到更好的排序算法?排序问题计算难度如何?其他排序算法的复杂度问题计算复杂度估......
  • 基础数据结构——初级——链表
    链表的特点是一组位于任意位置的存储单元存储线性表的数据元素。一般分为单向链表和双向链表(如下图所示)。 使用链表时,可以用STL的list,也可以自己写链表。如果自己写代码实现链表,有两种编码实现方法:动态链表和静态链表。在算法竞赛中为加快编码速度,一般用静态链表或者STL的l......
  • 向量组的极大无关组与齐次方程组的基础解系
    7.18向量组的极大无关组660:311~317求极大无关组方法:将向量排列成矩阵初等行变换成行阶梯型等层梯子选一列,即为极大线性无关组其余向量用极大无关组表示:将向量组化为单位向量组的形式。  例: 基础解系  求齐次方程组通解系数矩阵A→行最简(只能行变换)写同解......
  • 神经网络和Transformer基础
    一、矩阵乘法A*M=B。  其中,A表示原矩阵,是原空间的一组向量(数据点); M表示空间变换规则;B表示转换后新空间的一组向量(数据点)举例:比如1*2的向量,和矩阵2*3进行相乘,结果是1*3。说明向量(数据点)还是1个,数据维度从2升成3,从2维平面向量(数据点),变换到了3维立体空间的向量......
  • 十、面向对象基础
    文章目录学习目标一、面向对象介绍二、类和对象2.1类2.2对象2.3类的设计2.4self语句的使用三、魔法方法3.1对象操作的魔法方法3.2运算符相关的魔法方法四、内置属性4.1把对象当做一个字典使用五、类属性和对象(实例)属性六、私有属性和......
  • 操作系统基础(一)
    目录一.定义计算机系统层次结构二.功能一:资源管理者处理机管理存储器管理文件管理设备管理三.功能目标二:实现用户接口(向上层提供服务)GUI图形化用户接口联机/脱机命令接口程序接口四.操作系统的特征并发性共享性虚拟异步五.操作系统发展与分类手工操作阶段批处理......
  • Java基础 韩顺平老师的 集合 的部分笔记
    498,集合介绍 499,集合体系图(两个图背下)  packagecom.hspedu.collection;importjava.util.ArrayList;importjava.util.HashMap;publicclassCollection01{publicstaticvoidmain(String[]args){//老韩解读//1,集合主要是两组(单列......
  • 0基础学python-17:文件读写
    目录前言文件读写三步走:        打开文件-->读写文件-->关闭文件一、打开文件1.文件位置绝对位置:相对位置:2.open()方法二、读写文件1.读取文件2.写入文件三、关闭文件1.close()2.with语句前言        读写文件是最常见的IO操作。Python内置......
  • 高速接口自用笔记:GT基础(二)
    FPGA中相同BANK的电压需要一致,以实现高效的性能。本章是对GT基础(一)的补充。大量搬运:公众号-数字站:https://mp.weixin.qq.com/s/Z8ti7DIMdWEh8ogM0SQU4ghttps://mp.weixin.qq.com/s/0YoA9jhBOheZFwtTDJ75aQ 老哥写的很好,推荐都去看。小知识点:1.通过原语BUFDGE得到的时钟,可......
  • Java基础-基本类型和包装类型
    基本类型Java有八种基本类型intfloatdoublelongbooleancharshortbyte基本类型如果是局部变量,那它们的位置会在虚拟机栈种。如果是成员变量它们会存放在堆中。包装类型相对应的Java也有八种包装类型IntFloatDoubleLongBooleanCharShortByte区别1.默认值:......