因为每增加一个订单,时间是会增加的,所以先按截止时间d排序,这样的话无论是删除一个订单,或者增加订单,都不会影响已经选好的订单。然后维护一个已经选好的订单的大根堆(优先队列),如果当前无法选择的话,那么尝试和之前花费时间最长的交换。如果qiusing namespace std;const int ...
分类:
其他好文 时间:
2015-08-06 00:20:26
阅读次数:
147
忘记优先队列初始是大根堆了。。。。调了半天。。。 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10 #define clr(a,...
分类:
其他好文 时间:
2015-07-21 14:18:23
阅读次数:
154
1.小根堆如果根是儿童的存在留下的根值左孩子小于值;如果根是儿童的权利的存在的根值比他们的孩子的权利少值。2.大根堆如果根是儿童的存在留下的根值多名离开自己的孩子值。子女则根节点的值大于右子女的值。3.结论(1)堆是一棵全然二叉树(假设公有h层,那么1~h-1层均满,在h层连续缺失若干个右叶子)。(...
分类:
编程语言 时间:
2015-07-18 13:49:08
阅读次数:
179
堆排序是一种树形选择排序方法,它的特点是:在排序的过程中,将array[0,...,n-1]看成是一颗完全二叉树的顺序存储结构,利用完全二叉树中双亲节点和孩子结点之间的内在关系,在当前无序区中选择关键字最大(最小)的元素。1. 若array[0,...,n-1]表示一颗完全二叉树的顺序存储模式,.....
分类:
编程语言 时间:
2015-07-13 22:18:12
阅读次数:
217
1584. [CTSC2007]挂缀★★ 输入文件:pendant.in 输出文件:pendant.out 简单对比
时间限制:1 s 内存限制:256 MB
【题目描述】
题解:
十分智慧的贪心。。
第一眼就想到是要双关键字排序,推导一下可以发现,只要将C与W的加和排序即可,然后用一个大根堆维护一下即可(我比较懒。。直接用的STL。。)Code:#include<...
分类:
其他好文 时间:
2015-07-06 17:57:33
阅读次数:
168
对于每个节点,要在其子树中选尽量多的节点,并且节点的权值和小于一个定值.建立大根堆,每个节点从儿子节点合并,并弹出最大值直到和满足要求. 1 /************************************************************** 2 Problem: ...
分类:
其他好文 时间:
2015-06-12 18:46:22
阅读次数:
104
一.堆介绍堆,是一棵完全二叉树,根的值大于左右子树中所有结点的值,左右子树也是堆,除此之外,对其它元素之间的大小关系(如左右子树之间元素大小关系)没有要求。这是大根堆,如果把“大于”换成“小于“,就是小根堆,这里都以大根堆为例。由于堆是完全二叉树,所以可以用..
分类:
编程语言 时间:
2015-06-05 17:55:09
阅读次数:
245
?已知数组中的n个正数,找出其中最小的k个数。?例如(4、5、1、6、2、7、3、8),k=4,则最小的4个数是1,2,3,4?要求:–高效;–分析时空效率?扩展:能否设计出适合在海量数据中实现上述运算?方法一: 1 //利用最大根堆实现最小k个节点 2 //最大根堆特点:每个节点都比他左右孩子.....
分类:
其他好文 时间:
2015-05-29 00:23:12
阅读次数:
311
堆排序只需要一个记录大小的辅助空间,每个待排序的记录仅占用一个存储空间。
堆排序利用了大根堆(或小根堆)堆顶记录的关键字最大(或最小)这一特征,使得当前无序区中选取最大(或最小)关键字的记录变得简单。我们以大跟堆为例子,排序的基本操作如下:
首先是建堆,建堆就是不断调整堆的过程,从len/2处开始调整,一直到第一个节点,此处len是堆中元素的个数。建堆的过程是线性的过程,从l...
分类:
编程语言 时间:
2015-05-28 21:38:10
阅读次数:
206
堆排序(Heapsort)是指利用堆积树(堆)这种数据结构所设计的一种排序算法,它是选择排序的一种。可以利用数组的特点快速定位指定索引的元素。堆分为大根堆和小根堆,是完全二叉树。大根堆的要求是每个节点的值都不大于其父节点的值,即A[PARENT[i]] >= A[i]。在数组的非降序排序中,需要.....
分类:
编程语言 时间:
2015-05-14 15:45:37
阅读次数:
187