堆
xx
SYaoJun
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
1792. 最大平均通过率
分析 题目: 1792. 最大平均通过率 思路: 由于每个班级的通过率随着人数的增加单调递减,所以最大的通过率,必然是前k个人,使用大跟堆,每次取出增益最大的班级进行添加,即可得到最优解。 yxc视频讲解 代码 class Solution { public: double maxAverageRatio(vector<vector<int>>& classes, int extraStudents) { // 破题点在哪儿呢?原创 2021-10-25 22:20:43 · 172 阅读 · 0 评论 -
两个有序数组间相加和的Topk问题
题目 两个有序数组间相加和的Topk问题 考查点:堆 + 哈希表 分析 数据是十万,所以考虑O(NlogN)O(NlogN)O(NlogN)以下的解法。因为是TopK问题,所以暗示用堆,每次从堆中取出最大值,所以需要大根堆。放入堆中的元素不能有重复,因此要使用哈希表判重。另外,最大值只能是两种情况。 a数组往前移动一格,a[i-1] + b[j] b数组往前移动一格,a[i] + b[j-1] 所以每次将这两种值扔进大根堆中,取出k个值即为答案。 代码 #include <bits/st原创 2021-10-04 22:52:35 · 1036 阅读 · 0 评论 -
1155 Heap Paths (30 分)
题目链接 很简单的一道堆,亲自做出来的,一次AC,贼开心。 #include<bits/stdc++.h> using namespace std; vector<int> org(2005,0),tmp; int n; void dfs(int root){ if(root>n) return; if(2*root>n){ tmp.push_back(...原创 2019-07-23 12:07:26 · 189 阅读 · 0 评论 -
1147 Heaps (30 分)
题目链接 30分的水题不过分吧,真的过于简单。 #include<bits/stdc++.h> using namespace std; vector<int> org(2005,0),tmp; int n; void postorder(int r){ if(r>n) return; postorder(2*r); postorder(2*r+1); tmp...原创 2019-07-23 14:32:00 · 200 阅读 · 0 评论 -
7-31 笛卡尔树 (25 分)
二叉搜索树的判断方式和小根堆的判断方式 #include <iostream> #include <vector> #include <string> #include <cmath> #include <algorithm> #include <queue> #include <cstdio> #include ...原创 2019-10-12 14:57:55 · 339 阅读 · 0 评论 -
7-5 堆中的路径 (25 分)
注意: 题目说的是插入小顶堆 所以每次插入之后都一定是小顶堆,而不是都插入完成之后再去堆化为小顶堆。 每次插入一个元素以后,都要和它的父节点判断,如果当前的节点比父节点值更小,就跟父节点交换,同时对父节点进行递归处理,直到到达地根节点。 输出也很简单,只需要每次不断的指向父节点即可。 #include <iostream> #include <vector> #includ...原创 2019-10-12 14:00:07 · 291 阅读 · 0 评论
分享