码迷,mamicode.com
首页 >  
搜索关键字:大根堆    ( 291个结果
3月21日考试 题解(数据结构+区间DP+贪心)
前言:T3写挂了,有点难受。 T1 中位数 题意简述:给你一段长度为$n$的序列,分别输出$[1,2k-1]$的中位数$(2k-1\leq n)$。 其实正解是用两个堆分别为大根堆和小根堆。但我这里偷了个懒,直接由STL函数upper_bound二分查找插入数字(STL大法好 Code: #incl ...
分类:其他好文   时间:2020-03-21 23:15:27    阅读次数:84
省选模拟三十四 题解
T1 假如max(a)<0的话直接把所有的a排个序贪心选择大的尽量多 现在考虑一个正的ai对后面的影响 维护一个大根堆,a<0就往里添,a>=0就去抵消堆顶元素 这样新序列(堆里的元素)就可以像刚才那样做了 T2 先把点按权值从大到小排序 然后枚举那个点可以选也可以不选 前面的都已经选了 然后在当前 ...
分类:其他好文   时间:2020-02-29 22:08:02    阅读次数:60
ACM-ICPC实验室20.2.21测试-图论(二)
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
数据结构——堆排序
堆排序算法就是通过维护一个小根堆或者大根堆的数据结构。小/大根堆本质上是一个完全二叉树。利用了完全二叉树的性质,即完全二叉树节点x的子节点编号为2x和2x+1。 利用这个性质,我们可以让一个一维数组来模拟这个二叉树,数组下标从1开始建立,下标为2*x和2*x+1的就是x的左子树和右子树。 #incl ...
分类:编程语言   时间:2020-02-08 17:57:21    阅读次数:130
C++ STL——优先队列的结构体表示方法
优先队列是队列的一种,但是自身具有一定的排序功能,所以不具有队列“先进先出”的性质 刚刚接触优先队列,看过网上的用法后感觉还是太过于朦胧,所以打算自己写一个稍微细节一点的。 头文件 #include<queue> 常用操作 q.push() //放入元素 q.pop() //弹出元素 q.empty ...
分类:编程语言   时间:2020-02-04 12:30:12    阅读次数:141
题解 UVA501 【Black Box】
思路与 "中位数" 一题,解决方案比较像,使用对顶堆来解决。 具体实现为,使用两个堆,大根堆维护较小的值,小根堆维护较大的值,即小根堆的堆顶是较大的数中最小的,大根堆的堆顶是较小的数中最大的。 将大于大根堆堆顶的数(比所有大根堆中的元素都大)的数放入小根堆,小于等于大根堆堆顶的数(比所有小根堆中的元 ...
分类:其他好文   时间:2020-01-22 23:47:49    阅读次数:88
Kruskal重构树
引入 $OI$ $WIKI$上看到的,感觉挺有意思的,最开始想要学这个是因为它能用来解决最小瓶颈路问题 我们先来看道货车运输: $n$ 个点 $m$ 条无向边的图,$k$ 个询问,每次询问从 $u$ 到 $v$ 的所有路径中,最长的边的最小值。 $1\leq n\leq 15000,1\leq m\ ...
分类:其他好文   时间:2020-01-13 16:35:21    阅读次数:118
堆排序其实没那么难
堆指的是每个节点的值大于等于或小于等于左右节点的值的完全二叉树结构,堆又分大顶堆(每个节点的值大于等于左右节点的值)和小顶堆(每个节点的值小于等于左右节点的值)。 使用堆进行排序的前提是要先构造一个堆出来,这里以大顶堆为例。 给定一个数组进行构造大顶堆。 构造大顶堆的主要思路: 1、n个数据; 2、 ...
分类:编程语言   时间:2019-12-17 13:24:57    阅读次数:99
堆....
1, 我记得以前好像还想好好搞来着..... 什么大根堆什么小根堆来着? 2 抄自ppt 很多种实现优先队列的方式,最常见的就是堆。 最常见的堆就是二叉堆,C++中priority_queue定义了一个以权值为优先级的堆。 #include<queue> priority_queue<数据类型> q ...
分类:其他好文   时间:2019-12-14 21:27:35    阅读次数:92
291条   上一页 1 2 3 4 5 6 ... 30 下一页
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!