news 2026/2/24 8:56:01

优雅的分组贪心|线段树二分

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
优雅的分组贪心|线段树二分

许多优化 都是边遍历 边更新维护

可以借助各种数据结构(轮子bush

来减少循环次数 即时间复杂度 更快的拿到ret

lc3480

维护每个数字对应的最小、次小冲突值,计算无冲突子数组的最大数量,最终结合额外可扩展的子数组数量得到结果。

class Solution {
public:
long long maxSubarrays(int n, vector<vector<int>>& conflictingPairs) {
vector<vector<int>> groups(n + 1);
for (auto& p : conflictingPairs) {
int a = p[0], b = p[1];
if (a > b) {
swap(a, b);
}
groups[a].push_back(b);
}

long long ans = 0;
vector<long long> extra(n + 2);
vector<int> b = {n + 1, n + 1};

for (int i = n; i > 0; i--) {
// 维护最小 b 和次小 b
b.insert(b.end(), groups[i].begin(), groups[i].end());
ranges::sort(b);
b.resize(2);

ans += b[0] - i;
extra[b[0]] += b[1] - b[0];
}

return ans + ranges::max(extra);
}
};

lc3479

线段树二分 vs 树状数组

感觉线段树和树状数组本质上很相似,这俩的区别和应用场景是不一样么?

  • 可差分数据和不可差分数据的区别吧,比如最大值,树状数组只能够维护前缀的最大值
  • 树状数组适用于计算【差】信息的场景(比如子数组和等于两个前缀和的差)
  • 但对于求最大最小的问题不好处理,比如修改元素 + 计算区间最大值的情况,用线段树更合适
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/13 2:45:59

jetson orin(jetpack6.2)安装gazebo和gazebo_ros_pkgs

目前 Debian/Ubuntu 官方仅提供了基于 Amd64 架构的 Gazebo 软件包&#xff0c;尚未发布 Arm64 版本。因此&#xff0c;在 Ubuntu 22.04 系统中无法通过官方源直接获取适用于 Arm64 架构的 Gazebo 安装包。 解决办法&#xff1a; 1.安装gazebo &#xff08;1&#xff09;换源安…

作者头像 李华
网站建设 2026/2/21 19:34:00

【课程设计/毕业设计】基于Python的网络小说分析系统设计与实现【附源码、数据库、万字文档】

java毕业设计-基于springboot的(源码LW部署文档全bao远程调试代码讲解等) 博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、…

作者头像 李华
网站建设 2026/2/14 23:20:26

Scrapy 自定义命令与扩展:打造专属爬虫工具

Scrapy 作为 Python 生态中最强大的爬虫框架之一&#xff0c;其核心优势不仅在于内置的高效爬取能力&#xff0c;更在于高度的可扩展性。通过自定义命令和扩展&#xff08;Extensions&#xff09;&#xff0c;你可以摆脱框架默认功能的限制&#xff0c;打造贴合自身业务需求的专…

作者头像 李华
网站建设 2026/2/23 9:26:07

【图像加密】基于差分扩展的缩略图保持加密技术附matlab代码

✅作者简介&#xff1a;热爱数据处理、建模、算法设计的Matlab仿真开发者。&#x1f34e;更多Matlab代码及仿真咨询内容点击 &#x1f517;&#xff1a;Matlab科研工作室&#x1f34a;个人信条&#xff1a;格物致知。&#x1f525; 内容介绍在数字化浪潮的席卷下&#xff0c;数…

作者头像 李华