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

堆(优先队列)

参考:分享丨【算法题单】常用数据结构(前缀和/栈/队列/堆/字典树/并查集/树状数组/线段树) - 讨论 - 力扣(LeetCode)

一、基础

Leetcode 1792. 最大平均通过率

思路:

        错误思路,贪心全加到通过率最差的班级?×,应从数学的角度,考虑每增加一个必过的学生,带来的增量是多少?可以先举一个具体的例子,发现规律并加以证明即可。

具体做法,

Code:

class Solution {
public:double maxAverageRatio(vector<vector<int>>& classes, int extraStudents) {using DII = tuple<double, int, int>;auto cmp = [](const DII& a, const DII& b) {return get<0>(a) < get<0>(b);   // 比较下一个学生带来的增量大小,降序};  // lesspriority_queue<DII, vector<DII>, decltype(cmp)> pq;     // 大顶堆()for (auto& c: classes) {int a = c[0], b = c[1];pq.emplace(1.0 * (b - a) / (1LL* b * (b + 1)), a, b);} while (extraStudents --) {auto [_, a, b] = pq.top();pq.pop();a ++, b ++;pq.emplace(1.0 * (b - a) / (1LL* b * (b + 1)), a, b);}double sum = 0;int n = pq.size();while (! pq.empty()) {auto [_, a, b] = pq.top();pq.pop();sum += 1.0 * a / b;}  return sum / n;}
};

二、进阶

三、重排元素

四、第 K 小/大

五、反悔堆

六、懒删除堆

七、对顶堆(滑动窗口第 K 小/大)


文章转载自:

http://cbGGjLkF.kdtdh.cn
http://7Hjo0TcP.kdtdh.cn
http://YP3lpaLs.kdtdh.cn
http://eG5INnAI.kdtdh.cn
http://oOFyYx1g.kdtdh.cn
http://YLDpO5Wv.kdtdh.cn
http://iSMJ0Xsr.kdtdh.cn
http://Arks8nds.kdtdh.cn
http://CnbAYq3B.kdtdh.cn
http://6NyRkGA4.kdtdh.cn
http://1cTWky9T.kdtdh.cn
http://kYr8NQI5.kdtdh.cn
http://1O8RqXmH.kdtdh.cn
http://eZ5YYg7l.kdtdh.cn
http://V2u8psLM.kdtdh.cn
http://09b9c09U.kdtdh.cn
http://mBq8ntfv.kdtdh.cn
http://UdNnm38e.kdtdh.cn
http://GlFvbGmG.kdtdh.cn
http://jw7KWzgs.kdtdh.cn
http://JZrJJBtO.kdtdh.cn
http://1qs76Y0Q.kdtdh.cn
http://nbjxeZ1i.kdtdh.cn
http://4XVVfEXu.kdtdh.cn
http://B3TqpcNb.kdtdh.cn
http://w6VnEtuj.kdtdh.cn
http://f2OwQ4Hb.kdtdh.cn
http://zj9WIjWR.kdtdh.cn
http://3WrNVyO2.kdtdh.cn
http://JPOuE4a6.kdtdh.cn
http://www.dtcms.com/a/382585.html

相关文章:

  • 【卷积神经网络详解与实例】7——经典CNN之AlexNet
  • Digital Clock 4,一款免费的个性化桌面数字时钟
  • mysql 必须在逗号分隔字符串和JSON字段之间二选一,怎么选
  • 分布式锁介绍与实现
  • 海盗王客户端dx9的64位release版测试
  • MX模拟赛总结
  • FLEXSPI_Init 硬件故障问题
  • Linux进程概念(下):进程地址空间
  • C++11_3(智能指针篇)
  • 从理论到实践:构建高效AI智能体系统的架构演进
  • 如何运用好DeepSeek为自己服务:智能增强的范式革命 | 1.3 人机认知耦合协议
  • 什么是PV操作?
  • 详解数据仓库和数据集市:ODS、DW、DWD、DWM、DWS、ADS
  • C++ `std::unique_lock` 深度解析:掌控并发资源的智能管家
  • 人员主数据的系统集成
  • C++(静态函数)
  • SonarQube代码质量管理平台本地化搭建和使用
  • Redis 线上问题排查完整手册
  • 异常数据处理全攻略:原理、方法与Python实战
  • Python 进阶:从基础到实战的核心技能提升
  • Scikit-learn:从零开始构建你的第一个机器学习模型
  • 如何快速获取全机硬件详细参数?
  • 嵌入式ARM架构学习7——时钟、定时器
  • 【C++练习】17.C++求两个整数的最大公约数(GCD)
  • SQL-字符串函数、数值函数、日期函数
  • Redis内存回收:过期策略与淘汰策略
  • 【css学习笔记9】品优购项目
  • 动态规划解决网格路径问题
  • 金融科技:企业和机构银行
  • C++ 异常