算法思想
programmy
本人擅长Ai、Fw、Fl、Br、Ae、Pr、Id、PS等软件的安装与卸载,精通CSS、JavaScript、PHP、C、C++、C#、java、Ruby、Perl、Lisp、python、Objective-C、ActionScript等单词的拼写,熟悉windows、Linux、Mac、Android、IOS等系统的开关机。欢迎各大公司HR与本人联系。
展开
-
【转载】二分图最大匹配的König定理及其证明
二分图最大匹配的König定理及其证明 转载自 Matrix67本文将是这一系列里最短的一篇,因为我只打算把König定理证了,其它的废话一概没有。 以下五个问题我可能会在以后的文章里说,如果你现在很想知道的话,网上去找找答案: 1. 什么是二分图; 2. 什么是二分图的匹配; 3. 什么是匈牙利算法;(http://www.matrix67.com/b转载 2016-08-22 11:39:56 · 283 阅读 · 0 评论 -
【专题】基础动态规划
基本概念在学习动态规划之前先要清楚一些基本的概念: 最优子结构:问题的最优解由相关子问题的最优解组合而成,而这些子问题可以独立求解。 状态:动态规划的状态和搜索贪心的状态本质上是一个意思,其实可以把状态看成是规模小一点的问题。 状态转移方程:状态转移方程可以看成是如何由子子问题构造出子问题的一个过程。很多书里面都有这样一句话:动态规划=状态+状态转移算法思想很多问题都可以从搜索的角原创 2016-12-04 15:56:58 · 439 阅读 · 0 评论 -
【专题】贪心算法
贪心算法是很多经典算法的基本思想,比如kruskal和dijkstra 贪心算法一般用来求解最优化问题的,首先要清楚一个概念: 最优子结构性质: 如果问题的最优解由相关子问题的最优解组合而成,并且这些子问题可以独立求解,那么称这种问题满足最优子结构性质。贪心算法的设计步骤摘自算法导论: 1.将最优化问题转化为这样的形式:对其做出一次选择后,只剩下一个子问题需要解决。 2.证明做出原创 2016-11-19 17:44:23 · 722 阅读 · 0 评论 -
【专题】树状数组
树状数组 给定一个n个元素的数组A1、A2...AnA_1、A_2...A_n,树状数组支持以下两种操作。 Add(x,d):让Ax增加dAdd(x,d):让A_x增加d Query(L,R):计算AL+AL+1...ARQuery(L,R):计算A_L+A_{L+1}...A_R【例题一】LA4329pingpong题目大意 给出n个数a1、a2...an(1≤ai≤1000原创 2016-11-08 23:38:09 · 359 阅读 · 0 评论 -
Tarjan算法三大应用之双连通分量
基本概念定义1: 割点集合:点集V′∈VV'\in V,若GG删除了V′V'后不连通,但删除了V′V'的任意真子集后GG仍然连通,则称V′V'为割点集合 割点:若某一结点就构成了割点集合,那么称此结点为割点或关节点。 点连通度:点数最少的割点集合 割边集合:边集E′∈EE'\in E,若GG删除了E′E'后不连通,但删除了E′E'的任意真子集后GG仍然连通,则称E原创 2017-02-27 13:38:56 · 597 阅读 · 0 评论 -
差分约束系统总结
差分约束系统可以看成是线性规划的一种特殊情况,可以通过归约到图论中的最短路问题求解。形式差分约束系统是若干形如(Xi−Xj≥Ck)(X_i-X_j\ge C_k )的二元差分不等式组成的约束条件,对于差分约束系统的问题,通常是让你求其中两个变量差值的最小值min(Xi−Xj)min(X_i-X_j)或最大值max(Xi−Xj)max(X_i-X_j).求最小值求一个变量XiX_i比另一个变量XjX原创 2017-02-20 14:15:00 · 785 阅读 · 0 评论 -
Dijkstra、Bellman-Ford及Spfa算法思想对比
Dijkstradijkstra算法本质上算是贪心的思想,每次在剩余节点中找到离起点最近的节点放到队列中,并用来更新剩下的节点的距离,再将它标记上表示已经找到到它的最短路径,以后不用更新它了。这样做的原因是到一个节点的最短路径必然会经过比它离起点更近的节点,而如果一个节点的当前距离值比任何剩余节点都小,那么当前的距离值一定是最小的。(剩余节点的距离值只能用当前剩余节点来更新,因为求出了最短路的节点之原创 2016-08-16 23:10:33 · 14806 阅读 · 2 评论 -
Tarjan算法三大应用之强连通分量
Tarjan是一个对图的分析的强有力的算法,主要应用有:有向图的强连通分量、无向图的割点桥与双连通分量、LCA(最近公共祖先)基本概念下面主要介绍tarjan算法在强连通分量中的应用。首先我们需要知道强连通是有向图特有的概念,如果一个有向图中任意两点之间都是相互可达的那么称这个图为强连通图。一个图的极大连通子图称为改图的强连通分量。Tarjan算法求解强连通分量通过Tarjan算法可以得到每个点属于原创 2017-02-23 11:43:32 · 3300 阅读 · 1 评论 -
【专题】树链剖分
树链剖分定义: size[u]size[u]表示以节点u为根的子树的节点个数 我们将一个节点到它的儿子中sizesize值最大的那个节点的边定义为重边,其他边定义为轻边 我们称某条路径为重路径(或重链)当且仅当它全部由重边组成性质: 我们可以证明对于每个点到根的路径上都不超过O(logn)O(logn)条轻边和O(logn)O(logn)条重路径组成.这种将树上的边(路径)分为重边(重路径)原创 2017-08-30 21:46:33 · 367 阅读 · 0 评论