#pragma
#include<iostream>
#include<time.h>
#include<vector>
usingnamespacestd;
//从十万个数中找出最大的前K个,用小堆
#defineN100000
#defineK100
vector<int>Data;
//产生海量数据
voidGetData()
{
srand(unsigned(time(0)));
for(inti=0;i..
分类:
其他好文 时间:
2016-03-17 19:39:36
阅读次数:
165
Description Input Output Sample Input Sample Output 1. 标准库默认使用元素类型的<操作符来确定它们之间的优先级关系。 通过<操作符可知在整数中元素大的优先级高。 2. 数据越小,优先级越高 greater<int> 定义在头文件 <funct
分类:
其他好文 时间:
2016-03-15 20:53:51
阅读次数:
374
首先来说一下什么是左式堆:A:左式堆是专门用来解优先队列合并的麻烦(任意二叉堆的合并都必须重新合并,O(N)的时间)。 左式堆的性质: 1.定义零路经长:节点从没有两个两个儿子节点的路经长,把NULL定义为-1 2.堆性性质(x的键值比x左右两个儿子节点的键值要大或...
分类:
其他好文 时间:
2015-11-02 17:36:54
阅读次数:
373
#include#include#include#include#include#include#includeusing namespace std;int a[100];bool cmp(int a,int b){ return a>b;}int main(){//-----------...
分类:
其他好文 时间:
2015-05-12 18:47:27
阅读次数:
91
SequenceTime Limit:6000MSMemory Limit:65536KTotal Submissions:7762Accepted:2565DescriptionGiven m sequences, each contains n non-negative integer. Now...
分类:
其他好文 时间:
2015-04-02 20:49:59
阅读次数:
170
题目链接:
1105
一共两种操作 放入和取出(MAX)的
最多有10W次操作 ,暴力肯定会超时。
我们可以将盒子理解为一个大顶堆,即父节点大于左右子节点。
1.每次放入糖果时往上维护堆
2.取出时模仿堆排序的算法 将根节点(max)输出并与最后一个节点交换 再维护堆
代码:
#inclu...
分类:
其他好文 时间:
2015-01-27 11:20:47
阅读次数:
159
优先队列【堆】的应用: ????选择问题:输入时N 个元素以及一个整数k ,这N 个元素的集可以是全序的。该选择问题是要找出第 k 个最大的元素。。。 ????有多种解决方案: 1A算法:把这些元素读入数组,并对...
分类:
其他好文 时间:
2014-11-02 16:42:15
阅读次数:
401
1 无顺序的一个数组求最大的k个数
1)先用快速排序对数组排序在找前k个;
2) 先建立k小顶堆,再扫描整个数组,堆顶为k个数中最小的数;
/************************************/
//寻找在数组中最大的K个数
//小顶堆插入
void constructHeap(int a[],int n,int value){
a[n] = value;
i...
分类:
其他好文 时间:
2014-08-29 16:10:48
阅读次数:
220
C++中堆的应用:make_heap, pop_heap, push_heap, sort_heap, priority_queue
make_heap, pop_heap, push_heap, sort_heap都是标准算法库里的模板函数,用于将存储在vector/deque 中的元素进行堆操作,对不愿自己写数据结构堆的C++选手来说,这几个算法函数很有用,下面是这几个函数操作vecto...
分类:
编程语言 时间:
2014-07-30 20:43:24
阅读次数:
360