http://www.lydsy.com/JudgeOnline/problem.php?id=2333 (题目链接) 题意 N个节点维护一些操作。。 Solution 我们用可并大根堆进行维护。 对于每个连通块建一个局部可并堆,因为要询问全局最大值,所以还要对全局建一个全局可并堆记录之前局部可并堆 ...
分类:
其他好文 时间:
2017-01-09 22:03:48
阅读次数:
439
#include "stdafx.h" #include #include #include #define N 2000001 using namespace std; inline void read_int(int &now_); class T_heap { private: int hea... ...
分类:
其他好文 时间:
2017-01-07 20:48:58
阅读次数:
219
基本思想:每一趟从待排序的记录中选出关键字最小的记录,顺序放在已排好序的子文件的最后,直到全部记录排序完毕。直接选择排序1.基本思想2.算法分析 堆排序 1.堆的定义2.大根堆和小根堆3.堆排序与直接插入排序的区别 4.基本思想 调整堆符合堆的性质算法 建成初始堆 5.算法分析 【1】时间复杂度为O... ...
分类:
编程语言 时间:
2016-12-24 22:49:01
阅读次数:
202
堆: 1 using namespace dui //堆 2 { 3 #include<queue> //需要的库 4 priority_queue < int > Q; //定义一个Q的大根堆,top()为较大的 5 priority_queue < int,vector < int >,grea ...
分类:
其他好文 时间:
2016-11-17 20:26:53
阅读次数:
220
加上const保证小于号两边数据不会发生改变。 注:Stl中的堆为大根堆 可以重载大于号,使其变为小根堆。 ...
分类:
其他好文 时间:
2016-10-30 20:11:10
阅读次数:
326
将边按权值$A$从小到大排序,从小到大枚举$\max(A)$,然后双指针从大到小枚举$\max(B)$。 按权值$B$用大根堆维护所有已经加入的边,每次$\max(B)$减少时,不断取出权值$B$最大的边看看是否需要删除即可。 那么只需要检验这个图是否只有一个强连通分量。 考虑使用Kosaraju算 ...
分类:
其他好文 时间:
2016-10-26 07:11:34
阅读次数:
226
考虑到数据结构短板严重,从计算几何换换口味= = 二叉堆 简介 堆总保持每个节点小于(大于)父亲节点。这样的堆被称作大根堆(小根堆)。 顾名思义,大根堆的数根是堆内的最大元素。 堆的意义在于能快速O(1)找到最大/最小值,并能持续维护。 复杂度 push() = O(logn); pop() = O ...
分类:
其他好文 时间:
2016-10-16 01:48:04
阅读次数:
189
[数据结构学习备忘录] 一种数据结构,物理存储方式:数组 逻辑存储方式:近似于完全二叉树,假定i为堆元素的序数[Index],那么i/2就是该元素的左子树,(i/2 + 1)就是该元素的右子树,分为两种堆:大根堆、小根堆;这两种堆的区别是:大根堆的根节点元素的值比左右子树的值都要大,小根堆则相反。 ...
分类:
编程语言 时间:
2016-10-15 13:39:30
阅读次数:
138
//大根堆procedure push(x:longint);//元素x入堆 O(log t)var tx,i:longint;begin inc(t);//堆顶top加1 a[t]:=x;//将x放入堆的最后一个节点 i:=t; while (i>1)and(a[i>>1]<a[i]) do//将 ...
分类:
其他好文 时间:
2016-09-17 20:33:08
阅读次数:
138
一:堆排序 堆排序(Heapsort)是指利用堆积树(堆)这种数据结构所设计的一种排序算法,它是选择排序的一种。可以利用数组的特点快速定位指定索引的元素。堆分为大根堆和小根堆,是完全二叉树。大根堆的要求是每个节点的值都不大于其父节点的值,即A[PARENT[i]] >= A[i]。在数组的非降序排序... ...
分类:
其他好文 时间:
2016-09-12 23:59:49
阅读次数:
366