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

二分算法2-二分答案

//二分算法2——二分答案

//解法一:暴力算法
// 枚举所有的切割长度x
// 求出在x的情况下 ,能够切出来多少段

//解法二:利用二分来优化
// x表示:切割出来的小段的长度
// cnt表示:在x的基础下,最多能切出来多少段
// k表示:最终要切割的段数

include

using namespace std;
typedef long long LL; // 关键:木材长度/段数可能很大,用LL避免溢出

const int N = 1e5 + 10; // 最多1e5根木材
LL n, k; // n:木材数量,k:需要的最少段数
LL a[N]; // 存储每根木材的长度

// 核心函数:给定小段长度x,计算能切割出的总段数
LL calc(LL x){
LL cnt = 0; // 总段数
for(int i = 1; i <= n; i++){
cnt += a[i] / x; // 每根木材a[i]能切出a[i]/x段长度为x的小段(向下取整)
}
return cnt;
}

int main(){
cin >> n >> k;
for(int i = 1; i <= n; i++) cin >> a[i];

// 二分答案的核心逻辑
LL left = 0, right = 1e8; // 答案的范围:最小0,最大设为1e8(足够覆盖题目范围)
while(left < right){ // 收敛到唯一的最大xLL mid = (left + right + 1) / 2; // 向上取整(关键!)if(calc(mid) >= k){ // 总段数≥k,说明x可以更大,尝试往右找left = mid;} else { // 总段数<k,说明x太大了,需要往左找right = mid - 1;}
}
cout << left << endl; // 循环结束时left=right,就是最大的x
return 0;

}

http://www.jsqmd.com/news/444470/

相关文章:

  • 分治算法——求逆序对
  • word文档生成技术实现
  • C++游戏开发之旅 25
  • 使用vLLM部署Qwen/Qwen3.5-35B-A3B-FP8并且在DIFY中调用
  • ElasticSearch常见问题和注意事项
  • 一文搞懂LockSupport原理
  • Windows 安装 OpenClaw 踩坑全记录:Node、Git、CMake、VS Build Tools 一次解决
  • Flutter 三方库 preact_signals 的鸿蒙化适配指南 - 掌控极致信号响应、Signals 架构实战、鸿蒙级精密状态指控专家
  • 别只盯着模型参数了:聊聊多模态时代最容易被忽视的一件事——训练数据准备
  • 看懂“单词规律”的算法之美:为什么简单的模式匹配,其实很深
  • RAG 入门-LangChain 读取图片数据
  • 春节单位发的永辉超市卡如何回收? - 京顺回收
  • YOLO26改进66:全网首发--使用WFU改进特征融合模块
  • Kappa架构在电商大数据平台中的落地实践
  • AI+JavaWeb Vue Ajax
  • 详细介绍:数据结构之查找的方法
  • 2026年大连殡葬服务标杆机构最新推荐:大连众安诚信殡葬礼仪有限公司,一站式殡仪服务新标杆 - 海棠依旧大
  • 聚合支付系统设计方案
  • osi七层模型学习笔记
  • 2026年3月大连殡葬服务公司选择指南:殡葬一条龙、殡仪服务、殡葬用品、灵棚搭建、殡仪车出租相关公司 - 海棠依旧大
  • 保姆级VSCode入门指南,Python党直接抄作业
  • 二叉树的直径-leetcode
  • React Fibber架构设计理解
  • 2026年国内信号屏蔽仪品牌排名推荐,助您选择更具品质保障的产品 - 睿易优选
  • 嘎嘎降AI vs 学术猹 vs PaperYY降AI:同一篇论文三个结果 - 还在做实验的师兄
  • 博士论文降AI用什么工具?高要求场景下只推荐这2款 - 还在做实验的师兄
  • 论文降AI后查重率飙升怎么办?一招搞定两全其美 - 还在做实验的师兄
  • 【MySQL 数据库】MySQL 数据库核心概念详解:库、表、字段、主键与关系型模型一文读懂 - 指南
  • AI 模型服务化实战:FastAPI + vLLM 高性能部署指南
  • ARC092F - Two Faced Edges - Link