做一个题目时,看见解法中使用了优先队列,http://hawstein.com/posts/3.6.html
。颇为好奇,找资料学习了一下,顺便做个摘要。c++的用法:转自:http://blog.chinaunix.net/uid-21712186-id-1818266.html#include
...
分类:
编程语言 时间:
2014-05-12 10:17:49
阅读次数:
421
有一种生物能两两合并,合并之前的重量分别为m1和m2,合并之后变为2*sqrt(m1*m2),现在给定n个这样的生物,求合并成一个的最小重量...
分类:
其他好文 时间:
2014-05-12 06:32:12
阅读次数:
239
[可并堆与左偏树]我们最常用的二叉堆,是最常用的优先队列,它可以在O(logN)内实现插入和删除最小值操作。但是对于合并两个有序的优先队列,二叉堆就显得力不从心了。左偏树是一种可并堆(MergeableHeap),意思是可以在O(logN)时间内完成两个堆的合并操作。左偏树(LeftistTree)...
分类:
其他好文 时间:
2014-05-12 00:51:29
阅读次数:
292
链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2724
Message queue is the basic fundamental of windows system. For each process, the system maintains a message queue. If something h...
快速选择算法,就是从给定的一个集合S={a1,a2,...an}中选出第K个大小的数,或者给出其所在的下标之类的。
如果使用排序,比如merge_sort,然后返回第K个元素的下标,复杂度是O(NlogN)
如果使用heap_sort,或者优先队列,则复杂度是O(NlogK)
如果使用quick _sort的一个变种,叫 quick select,则平均复杂度为O(N),最坏复杂...
分类:
其他好文 时间:
2014-05-09 20:48:02
阅读次数:
841
给了你N个木棒,求把他们组装成一根需要的最小花费,每次只能选两根组装在一起,需要的花费为两个木棒之和,
以前遇到过把一整根切开的,那个是DP,这个则有些类似,可是大胆的猜测了一下,直接每次选取所有木棒中最短的两根,这样就可以了,那么贪心是适用的,但是数量很多,而且两根最短的组装好了得插回去,这样不可能每次都排序吧,
这题首先优先队列肯定是可以做的,
最小堆也是可以的,每次都选出堆里的...
分类:
其他好文 时间:
2014-05-07 12:44:17
阅读次数:
337
大意:每个测试用例是一个数组。找出xi和xj,(xi>xj),做运算令xi=xi-xj。可以做若干组这样的运算,使得最后的数组和最小。输出此和。
分析:用优先队列,每次找出最大的和次大的,处理后再加入此队列。注意多个相同的xi这种情况!...
分类:
其他好文 时间:
2014-05-07 07:19:27
阅读次数:
301
Toll! Revisited
大致题意:有两种节点,一种是大写字母,一种是小写字母。首先输入m条边,当经过小写字母时需要付一单位的过路费,当经过大写字母时,要付当前财务的1/20做过路费。问在起点最少需要带多少物品使到达终点时还有k个物品。当有多条符合条件的路径时输出字典序最小的一个。
思路:已知终点的权值,那么可以从终点向前推。求终点到起点的最短路径,然后按字典序打印路径。
比较...
分类:
Web程序 时间:
2014-05-07 06:05:27
阅读次数:
374
树
学习目标
理解什么是树及使用方法 学会使用树实现映射 用列表实现树 用类和引用实现树 用递归实现树 用堆实现优先队列
树的例子
前面我们学习过栈和队列这类线性数据结构,并且体验过递归,现在我们学习另一种通用数据结构,叫做树。树在计算机科学中应用广泛,象操作系统、图形学、数据库系统、网络等都要用到树。树和他们在自然界中的表哥——植物树——非常相似,树也有根,有分枝,有叶子...
分类:
编程语言 时间:
2014-05-06 23:24:22
阅读次数:
447