二叉树是最常见最重要的数据结构之一,它的定义如下: 二叉树(binary tree)是有限多个节点的集合,这个结合或者是空集,或者由一个根节点和两颗互不相交的、分别称为左子树和右子树的二叉树组成。 二叉树最基本的操作是遍历:一般约定遍历时左节点优先于右节点,这样根据根节点的遍历顺序可分为三种...
分类:
其他好文 时间:
2014-06-28 23:50:46
阅读次数:
631
问题
给定一系列线段,每条线段可以是水平或者竖直。求相交的线段
解决
算法的基本思想是先将线段以x坐标进行排序。做一条扫描线,从左往右扫描,也就是下图中的红线。
当进入一条水平的线时,记录该线段的y坐标。
当走出水平线时,从二叉查找树中删除该线段的y坐标。
...
分类:
其他好文 时间:
2014-06-19 12:56:29
阅读次数:
305
多段图问题是求由s到t的最小成本路径。图中的结点被划分成 k≥ 2个不相交的集合Vi , 1≤i≤k,其中V1和Vk分别只有一个结点 s (源点) 和t ( 汇点)。多段图向前处理的算法1、算法执行过程COST[j]=c(j,r)+COST[r];第4段 COST(4,9) = c(9,12) = ...
分类:
其他好文 时间:
2014-06-18 16:26:03
阅读次数:
210
二部图
难度:★★
二分图是图论中的一种特殊模型,指顶点可以分成两个不相交的集使得在同一个集内的顶点不相邻(没有共同边)的图。
下图是一个二分图的例子,红点之间不会相邻,白点之间不会相邻。
判断图中是否存在环
难度:★★
通过深搜就可以解决了。
欧拉环
...
分类:
其他好文 时间:
2014-06-18 07:49:35
阅读次数:
199
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=4183
这题题目意思很难看懂。。我看了好长时间也没看懂。。最终是从网上找的翻译。。我就在这翻译一下吧。
意思大约是:有多个点,每个点给出坐标与半径,加入两个点相交,就可以从这两个点走。题目要求先从起点到终点,再从终点回到起点。从起点到终点的过程中,只能从频率小的走到频率大的点(前提是两点相交),从终...
分类:
其他好文 时间:
2014-06-18 00:43:15
阅读次数:
275
最简单的不相交集的实现,来自MAW的《数据结构与算法分析》。代码:class DisjSet: def __init__(self, NumSets): self.S = [0 for i in range(NumSets+1)] def SetUnion(self, S,...
分类:
编程语言 时间:
2014-06-17 15:17:56
阅读次数:
265
二叉树(Binary Tree)是个有限元素的集合,该集合或者为空、或者由一个称为根(root)的元素及两个不相交的、被分别称为左子树和右子树的二叉树组成。当集合为空时,称该二叉树为空二叉树。在二叉树中,一个元素也称作一个结点。基本概念:(1)结点的度。结点所拥有的子树的个数称为该结点的度。(2)叶...
分类:
其他好文 时间:
2014-06-15 11:14:30
阅读次数:
255
在70年代,计算机已经发展了一段时间,芯片的规模也越来越复杂。因此人们不得不发明一些芯片设计的软件,在软件中完成芯片的设计、调试工作。
当时,模拟运行的时候根据电路的设计,模拟的过程中需要不断地判断矩阵是否相交。那时候还没有很好的算法,人们只能通过暴力手段逐个判断矩阵是否相交。在今天看来,这种算法的复杂度是N^2。根据摩尔定律,计算机CPU每隔18个月,晶...
分类:
其他好文 时间:
2014-06-14 13:20:08
阅读次数:
230
区间搜索问题就是给定一系列区间,和一个待测区间,求与待测区间相交的区间。
为了解决这个问题,需要专门编写一个类,这个类的接口如下:
public interface IntervalST, Value> {
void put(Key lo, Key hi, Value value);
Value get(Key lo, Key hi)
voi...
分类:
其他好文 时间:
2014-06-14 10:36:17
阅读次数:
182
http://poj.org/problem?id=1691
大致题意:给出n个矩形,其参数有左上角顶点坐标,右下角顶点坐标以及该矩形所涂颜色。规定是涂当前矩形当且仅当它上面的矩形都已经被涂了色。若当前涂的颜色和上一个所涂的不同,就要换一种颜色的刷子。问应该按怎样的顺序给这n个矩形涂色使换的刷子总数最少。
思路:显然涂色是有先后顺序的,就很容易想到拓扑排序。那么首先根据矩形相交...
分类:
其他好文 时间:
2014-06-10 14:09:15
阅读次数:
198