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

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

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

可以借助各种数据结构(轮子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 树状数组

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

  • 可差分数据和不可差分数据的区别吧,比如最大值,树状数组只能够维护前缀的最大值
  • 树状数组适用于计算【差】信息的场景(比如子数组和等于两个前缀和的差)
  • 但对于求最大最小的问题不好处理,比如修改元素 + 计算区间最大值的情况,用线段树更合适
http://www.jsqmd.com/news/275027/

相关文章:

  • 【课程设计/毕业设计】基于Django的蔬菜销售分析与预测可视化系统基于django的蔬菜销售分析与预测可视化系统【附源码、数据库、万字文档】
  • 大数据毕设项目:基于Django+大数据的学习资源推送系统(源码+文档,讲解、调试运行,定制等)
  • 【毕业设计】基于django的蔬菜销售分析与预测可视化系统(源码+文档+远程调试,全bao定制等)
  • 数据即服务在大数据领域的创新应用与实践
  • C# 判断 AVIF 图片是否是 HDR、动图的方法
  • 小白必看!AR开发从入门到实战全攻略
  • 大数据BI工具的分类预测模型
  • jetson orin(jetpack6.2)安装gazebo和gazebo_ros_pkgs
  • 第7天敏捷冲刺日志
  • struts2 代码执行 (CVE-2016-4438)
  • 无线网络仿真:无线网络基础_(4).天线与传播特性
  • 使用 tsfresh 和 AutoML 进行时间序列特征工程
  • xlsx知识点
  • SLAM(Simultaneous Localization and Mapping,同步定位与地图构建)是机器人、自动驾驶、增强现实等领域的核心技术
  • 团队作业4——项目冲刺
  • 122.Java深入学习之JVM三
  • Redis 重启数据恢复流程详解
  • 2025上半年大模型落地五大场景全解析:程序员必看,建议收藏!
  • 长廊
  • 2026-01-20 学期总结 - Sail-With
  • 在线教程丨GLM-Image基于自回归+扩散解码器混合架构,精准理解指令写对文字
  • 第 470 场周赛Q1——3701. 计算交替和
  • 2025上半年大模型中标数据分析:从大厂垄断到多元应用
  • 大模型应用开发工程师年薪154万,从0到1掌握高薪技能,非常详细收藏我这一篇就够了
  • 【总结】说课的套路模板
  • 完整教程:2025国产DevOps厂商选型对比:兼容能力评估
  • 超越简单嵌入,构建大模型智能体的生产级上下文检索系统
  • 第4天敏捷冲刺日志
  • 家长必备神器,绝了
  • 第5天敏捷冲刺日志