当前位置: 首页 > news >正文

算法题(142):木材加工

审题:

本题需要我们找到可以将木头切割至少k段的单段长度最长值

思路:
方法一:暴力解法

首先我们知道单段长度的最长值就是数组中数据的最大值max,所以我们可以遍历1~max的数据,将他们确定为l,然后计算出当前的切割段数,若大于等于k就记录下当前的l给answer变量,当遇到不满足大于等于k的情况,我们就直接退出循环,输出结果

优化1:逆序遍历1~max

由于我们是寻找满足段数大于等于k的最大l,而l越大段数其实越小,也就是说如果我们逆序遍历,段数是逐渐增加的,l是逐渐递减的,若我们遇到段数大于等于k,此时的l就是结果

时间复杂度:O(k*n)

因为我们外层遍历的是数组数据的最大值,而这个最大值最坏的情况是1e8,内层循环需要遍历数组计算段数,最坏情况进行1e5次,所以总共运行次数可能达到1e13,,一定超时

方法二:二分答案查找

其实我们的答案l的区间就是0到1e8(特殊处理了1cm的l也无法切割足够段数的情况,将0加入到答案区间),假设我们的答案为answer,那么answer自身以及其左边区域的l的段数k'都是大于等于k的(因为他们的l小,可划分的段数就多),同理answer右边区域的l的段数就都是小于k的。

此时就体现出这个区间的二段性,我们就可以使用二分查找的方法来提高效率了,而这里是对答案区间进行二分查找,所以又叫二分答案

第一步:二分查找答案区间

判断方法:

(1)当k' >= k:left = mid

(2)当k' < k: right = mid -1

而当left = mid的时候我们需要用向上取整的计算mid方法,防止死循环(出现在left与right相差偶数个数据的情况)

当left = mid + 1的时候用向下取整,防止跳过部分情况(出现在left和right相差奇数个数据的情况)

mid计算方法:(left+right+1)/2

k'计算方法:我们可以采用遍历数组a的数据来累加计算段数的方法

第二步:输出答案

答案就是left,因为答案一定在0到max之间,left和right最后相等就是找到答案了

解题:

#include<iostream>
using namespace std;
typedef long long ll;
const int N = 1e5 + 10;
int n, k;
int a[N];
//计算l的可切割段数
ll calnum(ll l)
{int cnt = 0;for (int i = 1; i <= n; i++){cnt += a[i] / l;}return cnt;
}
int main()
{cin >> n >> k;for (int i = 1; i <= n; i++){cin >> a[i];}int left = 0;int right = 1e8;ll mid = 0;while (left < right){mid = (left + right + 1) / 2;if (calnum(mid) < k){right = mid - 1;}else{left = mid;}}cout << left << endl;return 0;
}

P2440 木材加工 - 洛谷

相关文章:

  • Music AI Sandbox:打开你的创作新世界
  • java使用MinIO,虚拟机时间异常
  • Typora安装使用教程,图片相对储存路径路径设置
  • 滚珠导轨:电子制造领域精密运动的核心支撑
  • 跨线程和跨进程通信还有多种方式对比
  • 大模型(LLMs)agent
  • C++之“继承”
  • 年龄估计数据集
  • 深入探索 JavaScript 中的模块对象
  • 面试问题(连载。。。。)
  • 最优化方法Python计算:有约束优化应用——线性Lasso回归预测器
  • LeetCode算法题(Go语言实现)_62
  • 使用JAVA对接Deepseek API实现首次访问和提问
  • 【MySQL】第二弹——MySQL表的增删改查(CRUD)
  • 【Linux】module list的用法
  • 流批了,低调使用
  • 使用Hyper-V 安装Windows11操作系统
  • 初学python的我开始Leetcode题8-4
  • 图形移动处理
  • 高效C/C++之九:Coverity修复问题:关于数组操作 和 内存操作
  • 梅花奖在上海|第六代“杨子荣”是怎样炼成的?
  • 国家发改委副主任谈民营经济促进法:以法治的稳定性增强发展的确定性
  • 化学家、台湾地区“中研院”原学术副院长陈长谦逝世
  • 吴勇强、高颜已任南京市委常委
  • 重磅金融政策密集发布!一文梳理这场国新办发布会
  • 多个“网约摩托车”平台上线,工人日报:安全与监管不能掉队