算法分析
Jarily
这个作者很懒,什么都没留下…
展开
-
树上两点的最近公共祖先-Tarjan_LCA离线算法
/* *算法引入: *树上两点的最近公共祖先; *对于有根树的两个结点u,v,最近公共祖先LCA(T,u,v)表示一个结点x,满足x是u,v的祖先且x的深度尽可能大; *对于x来说,从u到v的路径一定经过点x; * *算法思想: *Tarjan_LCA离线算法; *Tarjan算法基于dfs的框架,对于新搜到的一个结点,首先创建由这个结点构成的集合,再对当前结点的每个子树进行搜索;原创 2013-05-19 21:19:28 · 9093 阅读 · 3 评论 -
网络最大流的三种基础算法
#include#include#include#include#includeusing namespace std;const int N = 10;const int MAX = 0xfffffff;int n,m;//n是点数,m是边数int source, sink;//source为源点,sink为汇点/****************************原创 2012-11-28 16:26:23 · 1478 阅读 · 0 评论 -
生成树计数-Matrix-Tree定理
/* *算法引入: *给定一个无向图G,求它生成树的个数t(G); * *算法思想: *(1)G的度数矩阵D[G]是一个n*n的矩阵,并且满足:当i≠j时,dij=0;当i=j时,dij等于vi的度数; *(2)G的邻接矩阵A[G]是一个n*n的矩阵,并且满足:如果vi,vj之间有边直接相连,则aij=1,否则为0; *定义图G的Kirchhoff矩阵C[G]为C[G]=D[G]-A原创 2013-05-08 17:12:24 · 5652 阅读 · 0 评论 -
Floyd算法求最小环
/* *算法引入: *求一个图G中的最小环路的朴素算法为:每次找到一条边,删除了求这两点之间的最短路径; *若能求出,则这条最短路径与原来的边构成一个环,不过时间复杂度略高; * *算法思想; *Floyd算法是按照顶点的编号增加的顺序更新最短路径的; *如果存在最小环,则会在这个环中的点编号最大的那个点u更新最短路径之前发现这个环; *即当点u被拿来更新i到j的最短路径的时候,可原创 2013-05-01 17:21:50 · 8605 阅读 · 0 评论 -
次小生成树
/* *算法引入: *设G=(V,E,w)是连通的无向图,T是图G的一棵最小生成树; *如果有另一棵树T1,满足不存在树T’,ω(T’)<ω(T1),则称T1是图G的次小生成树; * *算法思想: *邻集的概念:由T进行一次可行交换得到的新的生成树所组成的集合,称为树T的邻集,记为N(T); *设T是图G的最小生成树,如果T1满足ω(T1)=min{ω(T’)|T’∈N(T)},则T原创 2013-05-04 15:37:59 · 4551 阅读 · 0 评论 -
K最短路问题(单源点最短路径+A*算法)
/* *算法引入: *在单源点最短路径问题中,实际运用时还需知道最短路径外,次短路或者第三短路; *即要知道多条最短路,并排出其长度增加的顺序,即为K最短路问题; * *算法思想: *单源点最短路径+高级搜索A*; *A*算法结合了启发式方法和形式化方法; *启发式方法通过充分利用图给出的信息来动态地做出决定而使搜索次数大大降低; *形式化方法不利用图给出的信息,而仅通过数学的形原创 2013-05-01 14:27:58 · 11789 阅读 · 8 评论 -
最小k度限制生成树
/*************************************************算法引入:最小k度限制生成树,就是指有特殊的某一点的度不能超过k时的最小生成树;如果T是G的一个生成树且dT(v0)=k,则称T为G的k度限制生成树;G中权值和最小的k度限制生成树称为G的最小k度生成树;算法思想:设特殊的那点为v0,先把v0删除,求出剩下连通图的所有最小生成树;假如原创 2013-04-09 20:48:29 · 4171 阅读 · 1 评论 -
带权的二分图的最优匹配KM算法
/*********************************************************算法引入:给定一个完全二分图G=(X∪Y,X×Y),其中边(x,y)有权w(x,y);要找一个从X到Y具有最大权和的匹配M,即为二分图的最优匹配问题;KM(Kuhn_Munkras)算法求的是完备匹配下的最大权匹配;算法思想:KM算法是通过给每个顶点一个标号(叫做顶标)原创 2013-02-27 13:34:58 · 4434 阅读 · 1 评论 -
最小费用最大流算法
/***************************************************算法引入:任何容量网络的最大流流量是唯一且确定的,但是它的最大流f并不是唯一的;既然最大流f不唯一,因此,如果每条弧上不仅有容量限制,还有费用r;即每条弧上有一个单位费用的参数,那么在保证最大流的前提下;还存在一个选择费用最小的最大流问题,即为最小费用最大流问题;算法思想:寻找最原创 2013-02-26 12:56:23 · 28445 阅读 · 7 评论 -
流量有上下界的网络的最大流和最小流算法
/************************************************************算法引入:基础的网络流的每一条弧都对应一个弧容量c(u,v)>=0;而有上下界的网络流中,每条弧对应两个权值b(u,v)和c(u,v),即为弧流量的下界和上界;很显然基础的网络流中为其特殊情况,即b(u,v)==0的时候;算法分析:(1)最大流:当b(u,v原创 2013-02-19 15:38:58 · 7467 阅读 · 1 评论 -
HDU4607(Park Visit)2013多校1-树的直径
树的直径:树上的最长简单路径;原创 2013-07-25 11:03:24 · 1811 阅读 · 0 评论 -
割点和桥
割点和桥原创 2013-10-01 15:04:12 · 2319 阅读 · 0 评论 -
字符串-最小(大)表示法
/**************************************************最小(大)表示法:最小(大)表示法主要用于解决判断"同构"一类问题;循环同构问题:给出两个串:s1="babba"和s2="bbaba",其中两者均看成环状即首尾相接的;问:从s1的哪里断开可以得到和s2一样的串或者两者不会相同?本题就是从s1的第2个字符’a’后面断开,可以得到与s原创 2013-03-30 21:08:00 · 1082 阅读 · 0 评论 -
数据结构-SBT(Size Balanced Tree)
/*************************************************数据结构:SBT(Size Balanced Tree),又称傻逼树;数据域:值域key,左孩子left,右孩子right,保持平衡的size;性质:每棵子树的大小不小于其兄弟的子树大小;插入:插入算法先简单插入节点,然后调用一个维护过程以保持性质;删除:删除操作与普通维原创 2013-03-15 18:33:09 · 4498 阅读 · 0 评论 -
线性时间求最大回文子串的Manacher算法
/****************************************************算法引入:回文串指的是一个正着读和反着读都一样的字符串;要在一个字符串中求出它的长度最长的回文子串;算法思想:Manacher算法可以在O(n)的线性时间复杂度的情况下;求出以每个字符为中心的最长回文子串有多长;该算法把奇数的回文串和偶数的回文串统一起来考虑;大大的减少了奇数原创 2013-03-03 14:59:17 · 1769 阅读 · 0 评论 -
基本的排序算法
#include #include using namespace std;void BiInsertsort(int r[], int n) //折半插入排序{ for(int i=2; i<=n; i++) { if (r[i]<r[i-1]) { r[0] = r[i];原创 2013-02-18 19:30:10 · 695 阅读 · 0 评论 -
高精度乘法
/********************************************高精度乘法:计算的过程几乎和最原始的列竖式做乘法相同;在编程处理中,先不要急于进位,在最后统一处理;算法规律:一个数的第i位和另一个数的第j位相乘所得的数;一定是要累加到结果的第i+j位上;(i,j都是自右向左从0开始计数);**********************************原创 2013-02-27 14:57:00 · 1031 阅读 · 0 评论 -
高精度除法
/********************************************算法思想:反复做减法,看看从被除数里最多能减去多少个除数,商就是多少;所以算法核心是写一个大整数的减法函数;反复调用该函数进行减法操作;算法步骤:用数组a表示被除数,数组b表示除数,数组res表示商;先用被除数a减去除数b得到差的位数k,同时商+1;再用被除数a减去若干个除数b*(10^k)原创 2013-02-28 21:01:07 · 7658 阅读 · 0 评论 -
树状数组算法分析
/************************************************************************************树状数组有一维树状数组和二维树状数组;主要的问题模型为已知数组a[n],下标从1开始,更改a中的元素,要求得新的a数组中i到j区间内的和;树状数组中S[k]存储的是从k开始向前数k的二进制表示中右边第一个1所代表的数字个元原创 2012-12-29 16:32:11 · 587 阅读 · 0 评论 -
关于字符串匹配(单模式匹配)的各种算法
#include#include#include#includeusing namespace std;const int N=100000;//文本串的最大长度const int M=100;//模式串的最大长度int n;//文本串的实际长度int m;//模式串的实际长度char T[N];//文本串char P[M];//模式串int pre[N];//kmp里面的前原创 2012-11-27 13:18:02 · 2263 阅读 · 0 评论 -
实现后缀数组的倍增算法和DC3算法
/************************************************数据结构:后缀数组(Suffix_Array);子串:字符串S的子串r[i..j],i≤j,表示r串中从i到j这一段,也就是顺次排列r[i],r[i+1],...,r[j]形成的字符串;后缀:后缀是指从某个位置i开始到整个串末尾结束的一个特殊子串;字符串r的从第i个字符开始的后缀表示为原创 2013-03-22 14:31:52 · 4145 阅读 · 1 评论 -
数据结构-Trie树
/**********************************************************数据结构:Trie树,又称单词查找树或字典树,是一种树形结构,是一种哈希树的变种;基本原理:Trie树的核心思想是空间换时间,利用字符串的公共前缀来降低查询时间的开销以达到提高效率的目的;应用:用于统计和排序大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用原创 2013-03-25 13:06:39 · 1818 阅读 · 0 评论 -
字符串匹配-AC自动机
/*******************************************************算法介绍:AC自动机(Aho_Corasick automation),为多模字符串匹配算法;常见的例子为给出n个单词,再给出一段包含m个字符的文章,找出有多少个单词在文章里出现过;算法步骤:(1)构造一棵Trie树;根节点不包含字符,除根节点外每一个节点都只包含一个字符;原创 2013-03-25 21:10:23 · 1611 阅读 · 0 评论 -
数据结构-Spaly_Tree
/******************************************数据结构:Splay_Tree,伸展树;性质:伸展树是二叉查找树的一种改进;与二叉查找树一样,伸展树也具有有序性;即伸展树中的每一个节点x都满足:该节点左子树中的每一个元素都小于x;而其右子树中的每一个元素都大于x;与普通二叉查找树不同的是,伸展树可以自我调整;特点:伸展树并不是严格意义原创 2013-03-16 15:01:41 · 1841 阅读 · 0 评论 -
数据结构-BST(Binary Search Tree)
/******************************************数据结构:BST(Binary Search Tree),二叉查找树;性质:若结点的左子树不空,则左子树上所有结点的值均小于它的根结点的值;若结点的右子树不空,则右子树上所有结点的值均大于它的根结点的值;该结点的左、右子树也分别为二叉查找树;遍历:对于一个已知的二叉查找树,从小到大输出其节点的原创 2013-03-15 19:00:18 · 8471 阅读 · 0 评论 -
数据结构-并查集
/*******************************************************数据结构:并查集;基本功能:并查集用于处理不相交数据集合;基本操作:(1)查找一个元素的祖先(即查找这个元素属于哪个集合);(2)将两个元素所在的集合合并为一个集合;(3)删除操作,即把某个元素从它所在的集合中删除;*************************原创 2012-11-26 20:53:21 · 798 阅读 · 0 评论 -
HDU2767(Proving Equivalences)-有向图的强连通问题+Tarjan算法
有向图强连通分量的Tarjan算法原创 2013-07-22 10:26:28 · 1824 阅读 · 0 评论