LC 3479(2100) 线段树二分 水果成篮

题目
题目:
给你两个长度为 n 的整数数组,fruits 和 baskets,其中 fruits[i] 表示第 i 种水果的 数量,baskets[j] 表示第 j 个篮子的 容量。
你需要对 fruits 数组从左到右按照以下规则放置水果:
每种水果必须放入第一个 容量大于等于 该水果数量的 最左侧可用篮子 中。
每个篮子只能装 一种 水果。
如果一种水果 无法放入 任何篮子,它将保持 未放置。
返回所有可能分配完成后,剩余未放置的水果种类的数量。

思路:
我们需要应用一种数据和结构,可以高效地进行区间查询(查找最左边的符合条件的篮子)和更改(一个篮子装完水果后就没用了) ,那么显然是线段树。
直接套用线段树模板即可,注意下标。

代码:

const int MAXN = 1e5+2;
int tree[MAXN * 4];
const int inf = 1e9;
class Solution {
public:int numOfUnplacedFruits(vector<int>& fruits, vector<int>& baskets) {int n = fruits.size();auto build = [&](this auto&& self, int x, int l, int r) {if (l == r) {tree[x] = baskets[l - 1];return;}int mid = (l + r) >> 1;self(x * 2, l, mid);self(x * 2 + 1, mid + 1, r);tree[x] = max(tree[x * 2], tree[x * 2 + 1]);};auto change = [&](this auto &&self, int x, int l, int r, int cp, int cv) {if (l > cp || r < cp) return;if (l == r) {tree[x] = cv;return;}int mid = (l + r) >> 1;if (cp <= mid) self(x * 2, l, mid, cp, cv);else self(x * 2 + 1, mid + 1, r, cp, cv);tree[x] = max(tree[x * 2], tree[x * 2 + 1]);};auto query = [&](this auto&& self, int x, int l, int r,  int qv) {if (tree[x] < qv) return -1;if (l == r) return l;int mid = (l + r) >> 1;if (tree[x * 2] >= qv) {int q = self(x * 2, l, mid, qv);if (q >= 0) return q;}return self(x * 2 + 1, mid + 1, r, qv);};build(1, 1, n);int ans = 0;for (int i = 0; i < n; ++i) {int k = query(1, 1, n, fruits[i]);if (k < 0) {ans++;}else {change(1, 1, n, k, -inf);}}return ans;}
};

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

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

相关文章

文件的常用操作

Path相关操作,主要为文件属性,路径目录等点击查看代码 def _Path():from pathlib import Pathimport shutil# 创建 Path 对象print(Path().absolute())p = Path("data/example.txt")p1 = Path("data/d…

聊聊Oracle数据库的向量能力 - 详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

ReAct+LangGraph:构建智能AI Agent的完整指南(建议收藏) - 详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

第七天项目

苍穹外卖项目 - 第7天冲刺日志(项目总结与复盘) 日期:2025-12-02 冲刺周期:第7天/共7天 参会人员:李靖华 温尚熙 谢斯越 郑哲磊一、站立会议照片团队成员进行项目总结和复盘讨论二、最终验收会议记录 郑哲磊(后端…

Spring Boot框架中在Controller方法里获取Request和Response对象的2种方式

写在前面 javax.servlet.ServletRequest和javax.servlet.ServletResponse都是Servlet容器中定义的接口,分别用于获取客户端请求信息和将响应消息发送给客户端。 有两种方法在Contoller方法中获取它们:直接在Controll…

2025煤炭氟氯测定仪TOP5权威推荐:精准检测选对品牌,奥

煤质环保检测领域中,氟氯测定仪作为判定煤炭环保合规性的核心设备,其精准度、耐用性直接影响检测结果与企业生产效率。2024年行业数据显示,因氟氯测定仪检测偏差导致的环保合规风险事件占煤质检测问题的30%,而耐用…

2025年上海办公室装修公司口碑排名:迎湖办公室装修实力可靠

办公室是企业的第二战场,从空间规划到材料环保,每一处细节都关乎员工效率与品牌形象。面对市场上良莠不齐的装修公司,企业主常常陷入承诺与现实不符的困境:报价藏增项、工期拖延、材料不环保等问题频发。2025年办公…

Scrum 冲刺博客_4

Scrum 冲刺博客_4 站立式会议照片:昨天已完成工作:团队共同敲定数据接口规范 v1.0,明确了所有核心接口的参数、返回格式及异常码。 前端组基于接口规范,完成了前端请求封装的 TypeScript 类型声明,搭建了 Axios 请…

第五天项目

苍穹外卖项目 - 第5天冲刺日志 日期:2025-11-30 冲刺周期:第5天/共7天 会议时间:09:00 - 09:15 会议地点:开发室 参会人员:李靖华 温尚熙 谢斯越 郑哲磊一、站立会议照片团队成员正在讨论数据统计功能的实现细节二…

[豪の算法奇妙冒险] 代码随想录算法训练营第十四天 | 翻转二叉树、对称二叉树、二叉树的最大深度、二叉树的最小深度

翻转二叉树、对称二叉树、二叉树的最大深度、二叉树的最小深度代码随想录算法训练营第十四天 | 翻转二叉树、对称二叉树、二叉树的最大深度、二叉树的最小深度翻转二叉树题目链接:https://leetcode.cn/problems/inver…

团队作业4——7天敏捷冲刺

项目冲刺这个作业属于哪个课程 https://edu.cnblogs.com/campus/gdgy/Class34Grade23ComputerScience这个作业要求在哪里 https://edu.cnblogs.com/campus/gdgy/Class34Grade23ComputerScience/homework/13483这个作业…

JAX 训练加速指南:8 个让 TPU 满跑的工程实战习惯

TPU 训练的真实效率往往取决于两个核心要素:Shape 的稳定性与算子的融合度。 很多时候,JAX 任务之所以出现严重的性能瓶颈,并非算法本身设计有问题,而是忽视了 XLA 编译器与底层硬件对“确定性”的极度偏好。基于大…

251202 模拟测 总结

挂分惨烈(? 我 T1 的 \(5\) 分呢。 Pro.A对,所以为什么你 \(Ans\) 的初值不设为 \(n+1\),为什么。我问你呢你明明知道有负数啊!!!1111(崩溃通过十分严谨的证明大力瞎猜结论,我们发现,将 \(a\) 升序排序后,最…

【小题狂练A】“一切沉溺者挣扎者向所谓极致献出 最稚嫩的人格”

题单:https://www.luogu.com.cn/training/911686#information P14635 [NOIP2025] 糖果店 / candy(民间数据) 我们考虑进行贪心,对于每个选取 \(b_i\) 的情况必然连带着 \(a_i\) 一起选取,也就是我们把 \(a_i+b_i\…

第三天项目

苍穹外卖项目 - 第3天冲刺日志 日期:2025-11-28 冲刺周期:第3天/共7天 参与人员:李靖华 温尚熙 谢斯越 郑哲磊一、站立会议照片二、会议内容记录 郑哲磊(后端负责人) 昨天已完成的工作:✅ [WI-017] 完成员工管理…

第7篇Scrum冲刺博客

第7篇Scrum冲刺博客这个作业属于哪个课程 https://edu.cnblogs.com/campus/gdgy/Class12Grade23ComputerScience/这个作业要求在哪里 https://edu.cnblogs.com/campus/gdgy/Class12Grade23ComputerScience/homework/13…

2025年中国温度传感器主流品牌五大推荐:看哪家品牌适合实验

本榜单依托工业传感器市场全维度调研与真实客户口碑,聚焦实验室高精度需求、日本品牌技术特性、物流温控场景痛点三大核心方向,深度筛选出五家适配性标杆企业,为不同行业企业选型提供客观依据,助力精准匹配专业传感…

递归算法设计与实现 - Invinc

递归(Recursion)是一种通过函数调用自身来解决问题的方法。要正确设计和实现递归算法,必须满足 **递归三要素**,否则可能导致无限递归、栈溢出或逻辑错误。递归(Recursion)是一种通过函数调用自身来解决问题的方…

第二天项目

苍穹外卖项目 - 第2天冲刺日志 日期:2025-11-27 冲刺周期:第2天/共7天 参与人员:李靖华 温尚熙 谢斯越 郑哲磊 二、会议内容记录 郑哲磊(后端负责人) 昨天已完成的工作:✅ [WI-001] 搭建Spring Boot项目基础架构…

惊呆了!这个小脚本竟然同时搞定计算、进制转换和BMI计算

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …