ACM
文章平均质量分 78
lqcsp
这个作者很懒,什么都没留下…
展开
-
Bellman-ford算法 学习笔记
Bellman-Ford算法与Dijkstra算法思想一样,用于求解单源点最短路径问题。Bellman-ford算法除了可求解边权均非负的问题外,关键是还可以解决存在负权边的问题,而Dijkstra算法只能处理边权非负的问题,因此 Bellman-Ford算法的适用面要广泛一些。但是,原始的Bellman-Ford算法时间复杂度为 O(VE),比Dijkstra算法的时间复杂度高,就连经典的《算法原创 2013-06-01 16:07:02 · 1564 阅读 · 1 评论 -
LeetCode Best Time to Buy and Sell Stock III
题目要求:Say you have an array for which the ith element is the price of a given stock on day i.Design an algorithm to find the maximum profit. You may complete at most two transactions.Note原创 2014-05-13 04:43:58 · 716 阅读 · 0 评论 -
有向图,无向图的欧拉回路和欧拉通路poj 2337
1. 欧拉回路,欧拉通路定义与判断定义: 欧拉回路:从图的某一个顶点出发,图中每条边走且仅走一次,最后回到出发点;如果这样的回路存在,则称之为欧拉回路。 欧拉路径:从图的某一个顶点出发,图中每条边走且仅走一次,最后到达某一个点;如果这样的路径存在,则称之为欧拉路径。判断: 无向图欧拉回路判断:所有顶点的度数都为偶数。 有向图欧拉回路判断:所原创 2013-12-06 04:31:06 · 6491 阅读 · 1 评论 -
最小生成树-Kruscal算法
所谓最小生成树,就是在一个具有N个顶点的带权连通图G中,如果存在某个子图G',其包含了图G中的所有顶点和一部分边,且不形成回路,并且子图G'的各边权值之和最小,则称G'为图G的最小生成树。 由定义我们可得知最小生成树的三个性质: 最小生成树不能有回路。 最小生成树可能是一个,也可能是多个。 最小生成树边的个数等于顶点的个数减一。原创 2013-11-04 07:09:03 · 2101 阅读 · 0 评论 -
有向图强连通分量(Tarjan)算法
在图论中,连通图基于连通的概念。在一个无向图G 中,若从顶点到顶点有路径相连(当然从到也一定有路径),则称和是连通的。如果 G 是有向图,那么连接和的路径中所有的边都必须同向。如果图中任意两点都是连通的,那么图被称作连通图。强连通图指每一个顶点皆可以经由该图上的边抵达其他的每一个点的有向图。意即对于此图上每一个点对(Va,Vb),皆存在路径Va→Vb以及Vb→Va。强连通分量则是指一张有向图原创 2013-11-29 00:48:52 · 947 阅读 · 0 评论 -
最小生成树-prime算法
Prime算法的核心步骤是:在带权连通图中V是包含所有顶点的集合, U已经在最小生成树中的节点,从图中任意某一顶点v开始,此时集合U={v},重复执行下述操作:在所有u∈U,w∈V-U的边(u,w)∈E中找到一条权值最小的边,将(u,w)这条边加入到已找到边的集合,并且将点w加入到集合U中,当U=V时,就找到了这颗最小生成树。 其实,算法的核心步骤就是:在所有u∈U,w∈V-U原创 2013-11-04 08:43:55 · 30935 阅读 · 8 评论 -
最短路径-Dijkstra(poj 1135)
题意: 有一个多米诺骨牌的游戏,我们知道有关键骨牌和普通骨牌,将关键骨牌推倒之后,整个骨牌阵就会倒下,推动其他的关键骨牌,其中推倒关键骨牌A使的关键骨牌B也倒,需要一定的时间,所以本题要求求出最后一个倒的骨牌的位置,及其时间...每个骨牌阵都由关键骨牌1推起。分析:最后倒下的牌 有两种情形:① 如果最后倒下的牌是关键牌,其时间及位置就是第 1 张关键牌到其他关键牌中短路原创 2013-11-23 11:18:09 · 750 阅读 · 0 评论 -
并查集-(union-find sets)
在某些应用,要将n个不同元素分成一组不相交的集合,并且在各些集合上要提供两个操作,一个实查找一个元素所属的集合另一个操作是合并两个集合。应用有求一个图的连通分量个数。还有Kruscal算法中判断是否出现环。 其实并查集数据结构非常简单, 下面介绍的版本考虑了优化。 因为可能出现如下图所示的情况:在这做图的情况下查找一个点所属的集合的时间复杂度是O(n),就失去并查集说具有的高效原创 2013-11-04 05:05:38 · 838 阅读 · 0 评论 -
Bellman-Ford算法介绍总结
Bellman-Ford算法与Dijkstra算法思想一样,用于求解单源点最短路径问题。Bellman-ford算法除了可求解边权均非负的问题外,关键是还可以解决存在负权边的问题,而Dijkstra算法只能处理边权非负的问题,因此 Bellman-Ford算法的适用面要广泛一些。但是,原始的Bellman-Ford算法时间复杂度为 O(VE),比Dijkstra算法的时间复杂度高,就连经典的《算法原创 2013-11-01 23:39:10 · 1402 阅读 · 0 评论 -
网络最大流算法
最大流也是图的一种常用的算法,许多系统包含了流量问题。例如交通系统有车流量,金融系统有现金流,控制系统有信息流等。许多流问题主要是确定这类系统网络所能承受的最大流量以及如何达到这个最大流量。 如果你想比较彻底的弄清楚网络最大流的原理, 你需要了解三个关键的概念:残留网络,增广路径,最大流最小割定。 这三个概念在算法导论上有较详细的说明再次就不再讲述了,估计也没有算法导论上讲的清楚。所以可以原创 2013-11-02 01:53:03 · 1561 阅读 · 0 评论 -
poj1860 Bellman-ford算法应用
题意 : 就是套汇的问题,汇率rab, 增加了一个手续费 cab 。。。。。。。每次的结果是 (本金 - 手续费) * 汇率,而且一个人拥有的钱的类型是已知的,拥有的value 钱的个数也是已知的, 问你能不能增值。输入 :3 2 1 20.0 //钱种类个数 汇率的个数,拥有第几种钱, 拥有多少钱1 2 1.00 1.00 1.00原创 2013-06-01 16:13:24 · 982 阅读 · 0 评论 -
POJ 1062 priority_queue + Dijkstra (临界表) 实现
首先题目的意思很容易理解,都是中文的。 这题是Dijkstra的一个变形, 思路是: 以物品为结点,物品之间的优惠价格为边权值建立临界表,题意就是求图中结点1到其他结点的最短路长度(注意在计算每个结点的时候,加上各节点处物品的价值), 恰好就是探险家经过这个物品买卖途径所需要付出的金钱。用dijkstra算法求出单源最短路径,但是要注意题目中有个等级的约束条件,这就需要枚举各种可能的原创 2013-06-02 15:03:27 · 749 阅读 · 0 评论 -
Leetcode Distinct Subsequences
题目要求:原创 2014-08-19 14:31:32 · 575 阅读 · 0 评论