假设要实现非递减排序,则需要用要大顶堆。此处设计到三个大顶堆的操作:(1)自顶向下调整操作:MaxHeapify(对应堆的SiftDown操作)、(2)利用数组建立大顶堆:BuildMaxHeap、(3)不断交换堆顶元素(堆的最大元素)和堆的末尾元素,实现非递减排序。
优先队列分为最大优先队列和最小优先队列,分别借助于大顶堆和小顶堆。
优先队列有以下基本操作:(1)提取队列中的最大(小)元素;(2)提取队列中的最大(小)元素并从队列中删除;(3)将队列中元素为x的关键字减少(增大)到k,这里假设k的值不大(...
分类:
其他好文 时间:
2014-06-22 20:58:26
阅读次数:
319
介绍
晚上无聊的时候,我做了一个测试题,测试题的大体意思是:删除Map中Value重复的记录,并且只保留Key最小的那条记录。
例如:
I have a map with duplicate values:
("A", "1");
("B", "2");
("C", "2");
("D", "3");
("E", "3");
I would like to the map to have:
("A", "1");
("B", "2");
...
分类:
其他好文 时间:
2014-06-22 20:30:10
阅读次数:
175
方法,一个程序的基本组成,程序编写的最小设计单位,但写好一个方法却不容易。
先说什么样的方法才是一个好方法。首先,可读性要好,因为程序在编译运行之前一直都是给人看的;其次,对于耗费资源或者运算量大的方法,效率也很重要。
这里只讨论可读性。对于效率那是程序优化的技术问题,需要一定的功底,但可读性是我们所有人花些心力都可以做的很好的,而且这个做好了,也就很好了。
首先看一个方法有哪些组成部分,以...
分类:
其他好文 时间:
2014-06-22 20:07:46
阅读次数:
238
最小生成树是图论中的一个概念。首先介绍一下什么是生成树。生成树就是将一个图中所有的顶点全部连接在一起,并且保证图中没有出现回路。
下图不是生成树,因为没有连接所有的顶点。
下图不是生成树,因为图中有回路。
像下图这样的才是生成树。
生成树的概念介绍完了。那么最...
分类:
其他好文 时间:
2014-06-22 18:33:47
阅读次数:
202
二分图匹配:
最大匹配数=最大独立集=最小点覆盖
最小路径覆盖=点数-最大匹配数
Strategic Game
Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 4739 Accepted Submission(...
分类:
其他好文 时间:
2014-06-22 17:55:06
阅读次数:
163
无向图最小生成树的Prim算法,在实现上方法各异。本文演示了用Python是实现的方法,特别是应用了Python有的一个heapq排序方法,让代码更简洁。...
分类:
其他好文 时间:
2014-06-22 16:11:00
阅读次数:
176
最近一直做的几个功能都跟日期处理有关,比如判断今天是否登录,今天的最小时间,今天结束的最大时间等。
代码中都是用的JDK自带的 Calendar,使用起来相当费劲了,于是乎,忍不了,找到了一个名叫:JodaTime 的库,
目前Joda Time 已经纳入 JDK 8 的官方API了,但是JDK 8还是很遥远,下面我给大家演示几个实例:
1、 获取今天的开始时间:比如...
分类:
其他好文 时间:
2014-06-22 14:02:47
阅读次数:
176
本文章用七种思路来查找无序数组中的前k个最小(最大)元素,复杂度随着问题的分析变得越来越低,思路也随着分析变得越来越的。贯穿讲解了快速排序和堆排序的应用,对这两种的排序在阅读本文后会有更深刻的理解。...
分类:
其他好文 时间:
2014-06-22 00:06:29
阅读次数:
347
为了简化问题,我们需要作出一些假设。假设图中每条边的权重都是不一样的,假设整个图是连通的。这样假设的目的就是让最小生成树的计算结果是唯一的。
图的切割
介绍算法之前,需要先了解图的切割。图的切割就是将顶点分割成两部分,切到的边称之为交叉边。下图红色的先就是交叉边。
在最小生成树中,无论如何切割,最小生成树总是从交叉边中选择最小的...
分类:
其他好文 时间:
2014-06-21 23:51:30
阅读次数:
316
HDU 2435 There is a war (网络流-最小割)
题目大意:
n个岛通过有向边连在一起,countryOne坐落在1号岛上,countryAny坐落在n号岛上,现在1 要进攻 n ,n为了抵御1的攻击,要毁坏边,没条边毁坏要花费,现在1可以在 2-n 任意两个岛上建立一个摧毁不了的边,使得 countryAny 为了抵御进攻最小的花费最大为多少?
解题思路:
首先,最小割可以理解成网络流的流量,第一步 ,countryAny肯定要用最小的花费使得图不连通,这个花费就是最小割。
但是,co...
分类:
其他好文 时间:
2014-06-21 22:07:02
阅读次数:
385