优先队列和并查集
yonuyeung
武汉科技大学
展开
-
P1111 修复公路&P1195 口袋的天空
题目链接:https://www.luogu.com.cn/problem/P1111 标签:并查集,最小生成树 思路:本题用Kruskal算法 拓展1:最小生成树之Kruskal算法 思路模板: 来源:https://www.luogu.com.cn/blog/LonecharmRiver/solution-p1111 #include <iostream> using namespace std; int N, M, ans;//全局变量,函数也可以直接用,无需传参数 str原创 2022-01-21 16:52:10 · 580 阅读 · 0 评论 -
P1323 删数问题
题目链接:https://www.luogu.com.cn/problem/P1323 思路: 1.构建一个小根堆,从小到大取数 默认情况下,我们构建的优先队列是大根堆 拓展1:了解优先队列的具体用法 C++中优先队列priority_queue的基础用法 拓展2:了解大根堆、小根堆的具体含义 二叉堆 | 大根堆 小根堆 大根堆小根堆的排序规则是functional头文件里面less和greater 2.组成一个数 用stringstream(流的输入输出操作)转换数据类型,把数字...原创 2022-01-20 19:30:43 · 271 阅读 · 0 评论 -
洛谷P1551 亲戚
题目链接:https://www.luogu.com.cn/problem/P1551 标签:并查集 AC代码: #include<iostream> using namespace std; int arr[5005]; int f(int x) { if (x == arr[x]) return x; return f(arr[x]); } int main() { int n, m, p; int i, a, b; cin >> n >> m原创 2022-01-19 21:38:27 · 272 阅读 · 0 评论 -
洛谷P1090 合并果子
一、题目链接:https://www.luogu.com.cn/problem/P1090 标签:贪心,二叉堆,优先队列 二、思路: 最开始的思路:利用 sort() 将最小的两个果子堆合并,然后再次排序,不断重复直到只剩一堆。 缺点:时间复杂度难以想象地高 正确思路:利用堆里面的优先队列对果子堆进行操作,从而达到不用进行一个大的排序从而获得最小的两个数的效果。 在默认情况下,数值越小的优先级越低,放入-x从而达到数值越小的数优先级越高,省去了自定义仿函数的操作。 三、AC代码:原创 2022-01-17 17:08:47 · 601 阅读 · 0 评论