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

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.jsqmd.com/news/59878/

相关文章:

  • 文件的常用操作
  • 聊聊Oracle数据库的向量能力 - 详解
  • ReAct+LangGraph:构建智能AI Agent的完整指南(建议收藏) - 详解
  • 第七天项目
  • Spring Boot框架中在Controller方法里获取Request和Response对象的2种方式
  • 2025煤炭氟氯测定仪TOP5权威推荐:精准检测选对品牌,奥
  • 2025年上海办公室装修公司口碑排名:迎湖办公室装修实力可靠
  • Scrum 冲刺博客_4
  • 第五天项目
  • [豪の算法奇妙冒险] 代码随想录算法训练营第十四天 | 翻转二叉树、对称二叉树、二叉树的最大深度、二叉树的最小深度
  • 团队作业4——7天敏捷冲刺
  • JAX 训练加速指南:8 个让 TPU 满跑的工程实战习惯
  • 251202 模拟测 总结
  • 【小题狂练A】“一切沉溺者挣扎者向所谓极致献出 最稚嫩的人格”
  • 第三天项目
  • 第7篇Scrum冲刺博客
  • 2025年中国温度传感器主流品牌五大推荐:看哪家品牌适合实验
  • 递归算法设计与实现 - Invinc
  • 第二天项目
  • 一些md5绕过总结(长期补充)
  • Pytorch基础学习和实战,基于b站小土堆视频笔记 - 教程
  • 2025年中国仿石砖十大龙头厂家推荐:看哪家产品质量好?
  • 炫彩活体检测:金融科技的“生命感知”安全锁
  • 实用指南:Qt-VLC: 一个集成VLC的开源跨平台媒体播放库
  • Scrum3 冲刺博客
  • 团队作业四——项目冲刺
  • excel选中整列,设置单元格自动换行,为什么粘贴内容后还不换行,单独设置该单元格自动换行就可以,为什么整列设置没效果
  • Scrum1 冲刺博客
  • 实用指南:GitHub 全方位指南(续):实战进阶与生态拓展​
  • Scrum2 冲刺博客