leetcode.1760 袋子里最少数目的球 - 反向二分(二分答案)

news2025/2/1 9:01:45

1760. 袋子里最少数目的球

思路:

你的开销是单个袋子里球数目的 最大值 ,你想要 最小化 开销。

题目出现:最大值最小,最小值最大 则是二分题

已知开销值y越大,操作数越小,则问题具有单调性,可以用二分

二分查找每个开销值y,找到y最小的且不超过操作次数的那一个

  • 从答案开始搜索 设y为开销值  
  • 我们需要在满足 操作数≤operation 的情况下  让y尽量小
  • 计算每个袋子分到最大值为y个球所需的操作数总和sum
  • 如果sum<=operation 则缩右边界 让y变小
  • 如果sum>operation 则说明y值小了 增大y值
  • 最后搜索到的y值就是满足 操作数≤operation 且尽量小的球数

每个袋子操作数怎么计算?

设第i个袋子的球数为x 此时枚举的开销值为y

  • 当x≤y时,op=0
  • 当y<x≤2y时,op=1        当该袋子有2y个球 只要1次操作就可以分成y y
  • 当2y<x≤3y时,op=2
  • ……

因此该袋子的操作数为 \frac{x-1}{y}

class Solution {
public:
    int minimumSize(vector<int>& nums, int maxOperations) {
        int l=1,r=*max_element(nums.begin(),nums.end());
        while(l<r)
        {
            int mid=l+r>>1;
            long s=0;
            for(int x:nums) s+=(x-1)/mid;
            if(s<=maxOperations) r=mid;
            else l=mid+1;
        }
        return l;
    }
};
class Solution {
    public int minimumSize(int[] nums, int maxOperations) {
        int l=1,r=Arrays.stream(nums).max().getAsInt();
        while(l<r)
        {
            int mid=l+r>>1;
            long s=0;
            for(int x:nums) s+=(x-1)/mid;
            if(s<=maxOperations) r=mid;
            else l=mid+1;
        }
        return l;
    }
}

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/104448.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

微信小程序 | 小程序的事件处理

&#x1f5a5;️ 微信小程序 专栏&#xff1a;小程序的事件处理 &#x1f9d1;‍&#x1f4bc; 个人简介&#xff1a;一个不甘平庸的平凡人&#x1f36c; ✨ 个人主页&#xff1a;CoderHing的个人主页 &#x1f340; 格言: ☀️ 路漫漫其修远兮,吾将上下而求索☀️ &#x1f44…

怎么智能配音?推荐几个比较实用的配音方法给你

现在我们的生活变得越来越便捷化&#xff0c;越来越多的新鲜事物出现在我们的眼前&#xff0c;比如配音。随着短视频的火爆&#xff0c;相信屏幕前的你也剪辑过视频吧。给视频剪辑的过程中&#xff0c;为视频中的文字内容进行配音是一个必不可少的剪辑步骤&#xff0c;这样可以…

数字孪生智慧场馆项目应用场景展示

近年来,发展"数字经济"和建设"数字孪生城市"相继被提升为国家发展战略, 如何运用数字孪生技术活化体育场馆运用场景成了场馆智慧化建设道路上需要思考的问题。 数字孪生智慧场馆项目 北京智汇云舟科技有限公司成立于2012年&#xff0c;专注于创新性的“视…

IOT知识记录

文章目录物联网程序设计GPIO 端口配置结构体定义 //代码规范样例NB模组运行流程LORAWAN模组1. 基础知识&#xff1a;2. 运行流程&#xff1a;4G 和WIFIGPRSPDN与APNPDP上下文和PDP地址APN&#xff1a;APN即“接入点名称”物联网 程序设计 程序框架的规划各个模块功能的细分系…

氧饱夹语音芯片,内置功放直推喇叭输出,低成本语音IC,WTN6系列

血氧夹能够实时检测用户当前的血氧饱和度&#xff0c;相比于传统没有嵌入语音芯片的血氧夹&#xff0c;只有一个显示屏&#xff0c;无法直观知道当前血氧是正常还是偏低&#xff0c;需要用户查阅一些资料/问客服如何使用&#xff0c;大大降低了产品的体验&#xff1b; 添加了语…

界面控件DevExpress WPF中文指南 - 主题设计器工作区介绍

DevExpress WPF拥有120个控件和库&#xff0c;将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpress WPF能创建有着强大互动功能的XAML基础应用程序&#xff0c;这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。 DevExpress WPF的Them…

统一自己的mac和linux环境的终端使用(alacritty+tmux代替iterm2)

升级切换了下自己的终端工具tmux配置&#xff0c;终端工具从iterm2改到了alacritty。 为什么切换终端 快。 alacritty使用GPU进行渲染&#xff0c;可以做到其他无法实现的性能优化。小。 iterm2快40m&#xff0c;alacritty只有10m&#xff0c;当然这个只能算小优点&#xff0…

flex换轴,布局,语法,移动端

物理分辨率&#xff1a; 硬件所支持的&#xff0c;屏幕出厂就设定无法修改逻 辑分辨率&#xff1a; 软件可以达到的&#xff0c; 我们开发中写的是逻辑分辨率 视口&#xff08;viewport&#xff09;就是浏览器显示页面内容的屏幕区域。 <meta name"viewport" c…

栈的分类以及应用场景

栈的本质就是一段内存&#xff0c;程序运行时用于保存一些临时数据。栈大体可以分为四种类型空增、空减、满增、满减。ARM处理器一般使用满减栈。 目录 1、栈的分类 2、压栈/出栈的两种实现方式 (1) 方式一&#xff1a;使用后缀DB / IA (2) 方式二&#xff1a;使用后缀FD …

nexus 远程代码执行 (CVE-2020-10199)

目录 一、漏洞信息 二、影响版本 三、环境搭建 四、漏洞复现 五、修复建议 这里用的是docker desktopvulfocus搭建的环境。 一、漏洞信息 名称: nexus 远程代码执行 &#xff08;CVE-2020-10199/10204&#xff09; 描述: Nexus Repository Manager&#xff08;NXRM&a…

K8s 滚动升级与回退

目录前言一、升级二、回滚前言 Rolling Update 即滚动更新&#xff0c;先更新一部分副本&#xff0c;成功后再继续更新更多副本&#xff0c;最终完成所有的副本更新。前面说到动态伸缩容并不会触发上线&#xff0c;仅当 Deployment Pod 模板&#xff08;即 .spec.template&…

代码随想录拓展day1 1365.有多少小于当前数字的数字;941.有效的山脉数组;

代码随想录拓展day1 1365.有多少小于当前数字的数字&#xff1b;941.有效的山脉数组&#xff1b;1207.独一无二的出现次数&#xff1b;283. 移动零 打卡结束了&#xff0c;趁着世界杯当了几天懒狗&#xff0c;现在正好世界杯也结束了&#xff0c;希望能保持一个好习惯吧。 13…

m基于DCAR编码感知的网络路由发现算法matlab仿真

目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 1.路由请求过程 当一个源节点有数据要向目的节点发送且在当前路由缓存中未发现可用路径时&#xff0c;则启动路由请求过程&#xff0c;下面分步对该过程进行说明&#xff1a; 步骤1&#xff1a…

AI行动,解放做表打工人

1. atomecho 插件介绍 如果你是个—— 需要做财报、数据新闻的冤种&#xff1b; 或者是“网上有的我都想要”的囤积狂魔&#xff1b; 或是沉迷“CtrlC、CtrlV”的做表工具人。 那你一定不陌生—— 对不上的格式、找不到的数据、删不完的无效内容、按烂了的“CtrlC”和“CtrlV…

在Qt creator中查看Qt源码

Qt 是开源语言&#xff0c;阅读其实现的源代码可以帮助我们更好的了解Qt&#xff0c;解决开发中遇到的问题&#xff0c;能帮助我们更快的成长&#xff0c;本文介绍了Qt官方原代码的两种查看方法。 在Qt creator中查看Qt源码在线查看本地查看配置版本一、下载源码1、运行Mainten…

阿里云崩“出圈”了!保护业务还得加一道同云跨可用区容灾!

2022年12月18日&#xff0c;上午10点47分&#xff0c;阿里云的香港部分服务出现故障&#xff0c;导致多个香港及澳门站点受到影响。 随后阿里云方面发布公告表示&#xff0c;阿里云官网 12 月 18 日下午更新处理进展称&#xff0c;经排查&#xff0c;阿里云香港地域故障确认为…

嵌入式Linux驱动开发之点灯

使用驱动开发的方式点亮一个LED灯。看看两者有啥区别不&#xff1f; 一、先看原理图 首先查看原理图&#xff0c;看看我们的板子上的LED等接在哪一个IO口上面。 好了&#xff0c;看原理图我们知道LED灯接在芯片的GPIO1的第三个引脚上面&#xff0c;也就是GPIO1_IO03。 二、I…

优化稠密点之尝试通过 Balance 来分摊访问压力

回忆之前的官方架构图&#xff0c;数据在 storaged 中是分片的&#xff0c;且 raft 协议中只有 leader 才会处理请求&#xff0c;所以&#xff0c;重新进行数据平衡操作&#xff0c;是有可能将多个稠密点分摊到不同的服务上以减轻单一服务的压力。同时&#xff0c;我们对整个集…

记录C,C++关键字的位置,直接跳过注释和字符串文本。(修正)

依据第二版本&#xff0c;可以写一个跳过注释的查找函数 C_IndexOfWord Java_IndexOfWord CSharp_IndexOfWord 还有一种方法&#xff0c;可以先把所有注释用空格代替&#xff0c;查出的字符位置也不变。 以前版本&#xff1a; DList<TextColor> Syntax::GetTextColorP…

(三分钟)学会kd-tree 激光SLAM点云搜索常见

Kd-Tree&#xff1a; 今天来介绍一下有关Kdtree的相关概念&#xff0c;它是一维线段树的多维推广。Kd-tree常用在激光点云编程中使用&#xff0c;Kd-tree简称k维树&#xff0c;是一种空间划分的数据结构&#xff0c;常被用于高维空间中的搜索&#xff0c;比如范围搜索和最近邻…