堆: 树这种结构 本身在计算机科学领域 占有很重要的地位,这种数据结构之所以占有重要的地位,不仅仅是因为二分搜索树这样的一种结构, 是树本身这种形状可以产生很多拓展,对于不同的问题 ,我们可以稍微改变 或者 限制树这种数据结构的性质,从而产生不同的数据结构,高效的解决不同的问题, 从节开始,将会有四 ...
分类:
其他好文 时间:
2020-02-24 12:39:08
阅读次数:
56
题目 在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。 思路 堆排序 收获 用优先队列实现最大最小堆 注意下列代码中优先队列的创建声明,需要自定义比较函数 代码 ...
分类:
其他好文 时间:
2020-02-24 00:25:13
阅读次数:
93
题目 输入整数数组 arr ,找出其中最小的 k 个数。例如,输入4、5、1、6、2、7、3、8这8个数字,则最小的4个数字是1、2、3、4。 收获 优先队列实现最小堆 是最小堆 代码 ...
分类:
编程语言 时间:
2020-02-24 00:08:30
阅读次数:
66
思路 参考队友博客:https://www.cnblogs.com/AaronChang/p/12129861.html 思考如何构造一个树:(亮度低与重要度低)的二者匹配; 什么时候重要度低,就叶节点开始(从下到上)。 所以,从叶节点出发,往上构造,度数为0的就是叶节点加入优先队列,与重要度从小到 ...
分类:
其他好文 时间:
2020-02-22 20:20:24
阅读次数:
88
A.患者的编号 给出一个有向图,要求你输出字典序最小的拓扑排序。 常规拓扑排序是做不了的,正解是反向建图,同时用大根堆的优先队列维护,保证每次优先访问编号大的结点,再反向输出~ #include<bits/stdc++.h> using namespace std; const int maxn=1 ...
分类:
其他好文 时间:
2020-02-21 19:52:26
阅读次数:
72
这个用优先队列就可以了。 在这里补充一点优先队列和队列的知识。 优先队列 大根堆:从大到小排列。小根堆:从小到大排列。优先队列就是堆,也可以自己手写堆。// 小根堆的写法priority_queue<int,vector<int>,greater<int> > vis;// 大根堆的写法priori ...
分类:
其他好文 时间:
2020-02-16 16:09:34
阅读次数:
70
并查集算连通块的数量,集合的个数就是必然不开心的人数,再跑bfs,用优先队列维护~ #include<bits/stdc++.h> using namespace std; const int maxn=1e6+14; vector<int> g[maxn]; int father[maxn]; i ...
分类:
其他好文 时间:
2020-02-13 19:20:12
阅读次数:
48
krustral算法求最少结点数的最小生成树,用优先队列实时排序,优先选择已经被选中的中心~ #include<bits/stdc++.h> using namespace std; const int maxn=10014; int N,M,x,y; struct edge { string na ...
分类:
其他好文 时间:
2020-02-13 12:32:57
阅读次数:
84
"题面" 一开始拿到这个问题并不好做,于是考虑拆点。 考虑将一个点拆成 $c+1$ 个,每个点表示(编号,剩余油量)。 然后 $\text{Dijkstra}$ 最短路即可。 每次跑 $\text{Dijkstra}$ 时,先判断能不能再加 $1$ 单位的油,然后遍历每一条出边,加入优先队列。 注意 ...
本文始发于个人公众号: TechFlow , 原创不易,求个关注 今天的文章来介绍Python当中一个蛮有用的库—— heapq 。 heapq的全写是heap queue,是堆队列的意思。这里的 堆和队列 都是数据结构,在后序的文章当中我们会详细介绍,今天只介绍heapq的用法,如果不了解heap ...
分类:
编程语言 时间:
2020-02-11 09:51:42
阅读次数:
103