leetcode_1760 袋子里最少数目的球

1. 题意

给定一个数组,和一个最多次操作次数。每次操作可以将数组中的一个数 x x x分成两个数 t x − t t\quad x-t txt。问 m a x O p e r a t i o n C n t maxOperationCnt maxOperationCnt次操作后,数组中最大的数最小的值是多少。

2. 题解

这个题,我们需要转换思路,不要去想怎么分,而是经过操作后数组中有几个数。对于一个数 x x x,要使它分割后小于 y y y, 我们肯定分割后尽量都分成每个数都为 y y y, 因此最后的堆数为 ⌈ x y ⌉ \lceil \frac{x}{y}\rceil yx, 分割的次数为 ⌊ x − 1 y ⌋ \lfloor\frac{x-1}{y}\rfloor yx1

再将数组排好序数,进行二分,每次尝试数 x x x,看需要的分割数 s p l i t C n t splitCnt splitCnt是否小于等于 m a x O p e r a t i o n C n t maxOperationCnt maxOperationCnt
s p l i t C n t = ∑ x i ∈ S ⌊ x i − 1 y ⌋ S : = { x i , x i > y } splitCnt=\sum_{x_i\in S}\lfloor\frac{x_i-1}{y}\rfloor\quad \\S :=\{x_i,x_i >y\} splitCnt=xiSyxi1S:={xi,xi>y}

  • 代码一
class Solution {
public:

    int logcnt(int base,int v) {
        int ans = 0;
        while (base < v) {
            v = (v + 1)/2;
            ans++;
        }
        return ans;
    }
    bool check(const vector<int> &nums, int val,int bid, int maxCnt) {
        int sz = nums.size();
        int ndcnt = 0;
        for (int i = bid;i < sz;i++) {
            ndcnt += (nums[i]  - 1) / val;
        }

        return ndcnt <= maxCnt;
    }
    int FindNotLess(const vector<int> &a, int v) {
        int l = 0;
        int r = a.size();

        while (l < r) {
            int mid = (l + r) >> 1;
            if (a[mid] <= v)
                l = mid + 1;
            else 
                r = mid - 1;
        }

        return l;
    }
    int minimumSize(vector<int>& nums, int maxOperations) {

        sort(nums.begin(), nums.end());
        
        int sz = nums.size();
        int l =  1;
        int r = *nums.rbegin();
        
        while (l < r) {
            int val = (l + r) >> 1;

            // int idx = FindNotLess(nums, val);
            vector<int>::iterator it = upper_bound(nums.begin(), nums.end(), val);
            int ndCnt = 0;
            // for (int i = idx;i < sz;i++) {
            //     ndCnt += (nums[i] - 1) / val;
            // }
            for (;it != nums.end(); it++) {
                ndCnt += ((*it) - 1)/val;
            }
            if (ndCnt <= maxOperations) {
                r = val;
            }
            else {
                l = val + 1;
            }
        }

        return l;
    }
};

其实不需要排序的,直接尝试遍历整个数组就好了

  • 03xf的代码
class Solution {
public:
    int minimumSize(vector<int>& nums, int maxOperations) {
        auto check = [&](int m) -> bool {
            long long cnt = 0;
            for (int x : nums) {
                cnt += (x - 1) / m;
            }
            return cnt <= maxOperations;
        };

        int left = 0; // 循环不变量 check(left) == false
        int right = ranges::max(nums); // 循环不变量 check(right) == true
        while (left + 1 < right) {
            int mid = left + (right - left) / 2;
            (check(mid) ? right : left) = mid;
        }
        return right;
    }
};

参考

03xf

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

springcloud集成gateway

本篇文章只介绍gateway模块的搭建步骤&#xff0c;并无gateway详细介绍 gateway详解请查看&#xff1a;SpringCloudGateway官方文档详解 前置处理 父模块中已指定版本 不知道如何选择版本看这篇&#xff1a; 手把手教你梳理springcloud与springboot与springcloudalibaba的版本…

计算机网络(1)基础篇

目录 1.TCP/IP 网络模型 2.键入网址--->网页显示 2.1 生成HTTP数据包 2.2 DNS服务器进行域名与IP转换 2.3 建立TCP连接 2.4 生成IP头部和MAC头部 2.5 网卡、交换机、路由器 3 Linux系统收发网络包 1.TCP/IP 网络模型 首先&#xff0c;为什么要有 TCP/IP 网络模型&a…

PyInstaller在Linux环境下的打包艺术

PyInstaller是一款强大的工具&#xff0c;能够将Python应用程序及其所有依赖项打包成独立的可执行文件&#xff0c;支持Windows、macOS和Linux等多个平台。在Linux环境下&#xff0c;PyInstaller打包的可执行文件具有独特的特点和优势。本文将详细介绍PyInstaller在Linux环境下…

寒假2.12

题解 web&#xff1a;XYCTF2024-牢牢记住&#xff0c;逝者为大 打开环境&#xff0c;是源代码 看到了熟悉的preg_match函数 代码解析&#xff1a; 输入的cmd长度不能超过13&#xff0c;可以使用GET[‘cmd’]躲避长度限制 使用正则表达式过滤的一系列关键字 遍历get数组&…

如何构建有效的人工智能代理

目录 什么是 AI 代理? 何时应使用 AI 代理? 人工智能代理的构建模块 构建 AI 代理的常用方法 1. 提示链接(分步说明) 2.路由(将任务发送到正确的地方) 3.并行处理(同时做多件事) 4. 协调者和工作者 AI(团队合作) 5. 评估器和优化器(修复错误) 如何让人工…

华为云+硅基流动使用Chatbox接入DeepSeek-R1满血版671B

华为云硅基流动使用Chatbox接入DeepSeek-R1满血版671B 硅基流动 1.1 注册登录 1.2 实名认证 1.3 创建API密钥 1.4 客户端工具 OllamaChatboxCherry StudioAnythingLLM 资源包下载&#xff1a; AI聊天本地客户端 接入Chatbox客户端 点击设置 选择SiliconFloW API 粘贴1.3创…

mysql读写分离与proxysql的结合

上一篇文章介绍了mysql如何设置成主从复制模式&#xff0c;而主从复制的目的&#xff0c;是为了读写分离。 读写分离&#xff0c;拿spring boot项目来说&#xff0c;可以有2种方式&#xff1a; 1&#xff09;设置2个数据源&#xff0c;读和写分开使用 2&#xff09;使用中间件…

吊舱响应波段详解!

一、响应波段技术 可见光波段&#xff1a;通过高分辨率相机捕捉地面或空中目标的清晰图像&#xff0c;适用于白天或光照条件良好的环境下进行观测。 红外波段&#xff1a;利用红外辐射探测目标的温度分布&#xff0c;实现夜间或恶劣天气条件下的隐蔽目标发现。红外波段通常分…

AI驱动的直播带货电商APP开发:个性化推荐、智能剪辑与互动玩法

时下&#xff0c;个性化推荐、智能剪辑、互动玩法等AI技术的应用&#xff0c;使得直播电商平台能够精准触达用户、提升观看体验、提高转化率。对于希望在直播电商领域占据一席之地的企业来说&#xff0c;开发一款AI驱动的直播带货APP&#xff0c;已经成为提升竞争力的关键。 一…

ComfyUI流程图生图原理详解

一、引言 ComfyUI 是一款功能强大的工具&#xff0c;在图像生成等领域有着广泛应用。本文补充一点ComfyUI 的安装与配置过程遇到的问题&#xff0c;并深入剖析图生图过程及相关参数&#xff0c;帮助读者快速入门并深入理解其原理。 二、ComfyUI 的安装与配置中遇到的问题 &a…

本地部署DeepSeek集成VSCode创建自己的AI助手

文章目录 安装Ollama和CodeGPT安装Ollama安装CodeGPT 下载并配置DeepSeek模型下载聊天模型&#xff08;deepseek-r1:1.5b&#xff09;下载自动补全模型&#xff08;deepseek-coder:1.3b&#xff09; 使用DeepSeek进行编程辅助配置CodeGPT使用DeepSeek模型开始使用AI助手 ✍️相…

硬件学习笔记--40 电磁兼容试验-4 快速瞬变脉冲群试验介绍

目录 电磁兼容试验-快速瞬变脉冲群试验介绍 1.试验目的 2.试验方法 3.判定依据及意义 电磁兼容试验-快速瞬变脉冲群试验介绍 驻留时间是在规定频率下影响量施加的持续时间。被试设备&#xff08;EUT&#xff09;在经受扫频频带的电磁影响量或电磁干扰的情况下&#xff0c;在…

c++ 多线程知识汇总

一、std::thread std::thread 是 C11 引入的标准库中的线程类&#xff0c;用于创建和管理线程 1. 带参数的构造函数 template <class F, class... Args> std::thread::thread(F&& f, Args&&... args);F&& f&#xff1a;线程要执行的函数&…

XSS 常用标签及绕过姿势总结

XSS 常用标签及绕过姿势总结 一、xss 常见标签语句 0x01. 标签 <a href"javascript:alert(1)">test</a> <a href"x" onfocus"alert(xss);" autofocus"">xss</a> <a href"x" onclickeval(&quo…

基于SSM的农产品供销小程序+LW示例参考

1.项目介绍 系统角色&#xff1a;管理员、农户功能模块&#xff1a;用户管理、农户管理、产品分类管理、农产品管理、咨询管理、订单管理、收藏管理、购物车、充值、下单等技术选型&#xff1a;SSM&#xff0c;Vue&#xff08;后端管理web&#xff09;&#xff0c;uniapp等测试…

未授权访问成因与防御

1、未授权访问根因 2、检查步骤 3、修复建议 1、更新组件至安全版本 2、加强访问策略限制&#xff0c;限制用户访问 3、定期进行漏扫和渗透测试发现威胁及时修复 4、漏洞概览 Elasticsearch未授权访问漏洞 Hadoop未授权访问漏洞 Jenkins未授权访问 MongoDB未授权访问 Zoo…

策略模式-小结

总结一下看到的策略模式&#xff1a; A:一个含有一个方法的接口 B:具体的实行方式行为1,2,3&#xff0c;实现上面的接口。 C:一个环境类&#xff08;或者上下文类&#xff09;&#xff0c;形式可以是&#xff1a;工厂模式&#xff0c;构造器注入模式&#xff0c;枚举模式。 …

16.React学习笔记.React更新机制

一. 发生更新的时机以及顺序## image.png props/state改变render函数重新执行产生新的VDOM树新旧DOM树进行diff计算出差异进行更新更新到真实的DOM 二. React更新流程## React将最好的O(n^3)的tree比较算法优化为O(n)。 同层节点之间相互比较&#xff0c;不跨节点。不同类型的节…

SpringBoot通过文件监听实现MQ加密数据异步转发

一、前言 假设在两个局域网中&#xff0c;生产者和消费者进行通信 使用同步方式&#xff0c;mq偶尔会因为网络策略等问题导致消息发送失败&#xff0c;那么这条数据就丢失了 这时可以使用异步方式&#xff0c;将数据在生产端存一份&#xff0c;网通时发&#xff0c;网断时存 …

windows10本地的JMeter+Influxdb+Grafana压测性能测试,【亲测,避坑】

一、环境&#xff0c;以下软件需要解压、安装到电脑上。 windows10 apache-jmeter-5.6.3 jdk-17.0.13 influxdb2-2.7.11 grafana-enterprise-11.5.1二、配置Influxdb&#xff0c;安装完默认连接http://localhost:8086/。打开连接&#xff0c;配置如下。 1、配置bucket&#x…