随笔分类 -  算法

算法、数据结构、公式等。
摘要:堆排序中首先需要做的就是建堆,广为人知的是建堆复杂度才O(n),它的证明过程涉及到 高等数学 中的级数或者 概率论 ,不过证明整体来讲是比较易懂的。 堆排过程 代码如下 建堆的过程就是从 最后一个分支结点 开始逐层向上遍历,将结点向下调整至合适的位置,以不至于破坏原来的堆。比如上图,遍历的结点编号依 阅读全文
posted @ 2018-02-01 13:24 xcw0754 阅读(2707) 评论(1) 推荐(1)
摘要:附William Pugh的论文 "Skip Lists: A Probabilistic Alternative to Balanced Trees" 写在前面 以下内容针对的是Skip List的插入和删除,建议你先到其他地方大概了解一下Skip List长什么样子的,然后再过来看看这篇,最好还 阅读全文
posted @ 2018-01-19 22:26 xcw0754 阅读(171) 评论(0) 推荐(0)
摘要:1. 简介 红黑树也是一种自平衡二叉查找树,具有二叉树的特点,又与平衡二叉树有区别,主要区别在于红黑树的“平衡”不再是"左右子树高度之差不大于1",全部体现在其定义中。它的统计性能要好于平衡二叉树(AVL树),因此,红黑树在很多地方都有应用。在C++ STL中,很多部分(目前包括set, multi 阅读全文
posted @ 2015-11-17 12:49 xcw0754 阅读(330) 评论(0) 推荐(0)
摘要:卡特兰数用于解决一些特定的排列问题,一般是求解有多少种排列。 Catalan数的定义: (1)当n=1时,C(1)=1。 (2)当n>1时,C(n) = C(1)*C(n-1) + C(2)*C(n-2) + ... + C(n-1)*C(1) (3)当然,还能这样算: (4)更厉害的,是可以这样算 阅读全文
posted @ 2015-11-08 17:38 xcw0754 阅读(346) 评论(0) 推荐(0)
摘要:懒得整理了,请勿往下看。 (一)欧拉函数 设n为正整数,以φ(n)表示不超过n且与n互素的正整数的个数,称为n的欧拉函数值,这里函数φ:N→N,n→φ(n)称为欧拉函数。有如下一些性质: (1)欧拉函数是积性函数——若m,n互质,φ(mn)=φ(m)φ(n)。 (2)特殊性质:当n为奇数时,φ(2n 阅读全文
posted @ 2015-09-28 20:29 xcw0754 阅读(427) 评论(0) 推荐(0)
摘要:KM算法大概过程: (1)初始化Lx数组为该boy的一条权值最大的出边。初始化Ly数组为 0。 (2)对于每个boy,用DFS为其找到一个girl对象,顺路记录下S和T集,并更新每个girl的slack值。若不能为其找到对象,则转3。 (3)找出非T集合的girl的最小slack值为d,更... 阅读全文
posted @ 2015-08-10 20:42 xcw0754 阅读(1589) 评论(0) 推荐(0)
摘要:本文转自:http://www.cnblogs.com/void/archive/2011/08/26/2153928.html 一直不知道差分约束是什么类型题目,最近在写最短路问题就顺带看了下,原来就是给出一些形如x-y<=b不等式的约束,问是否有解! 神奇的是这类问题竟然可以转换成图论里的最短路 阅读全文
posted @ 2015-07-31 21:51 xcw0754 阅读(220) 评论(0) 推荐(0)
摘要:适合已经对网络流有一点想法但不是很清楚的人看。所有图均盗用别人的。 只需要知道的概念: C[u][v]:从u到v这条边可以一次性通过的容量。 F[u][v]:从u到v这条边目前流过了多少的流量(即已经cut掉C[u][v]的多少了)。 下面可以开始看图了: 假设上图是已经知道的一些容量的使用状况,可 阅读全文
posted @ 2015-07-12 13:08 xcw0754 阅读(205) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2015-07-07 18:25 xcw0754 阅读(5) 评论(0) 推荐(0)
摘要:后缀数组——处理字符串的有力工具 阅读全文
posted @ 2015-07-07 16:20 xcw0754 阅读(146) 评论(0) 推荐(0)
摘要:关于如何求强连通分量的知识请戳https://www.byvoid.com/blog/scc-tarjan/ 1 void DFS(int x) 2 { 3 dfn[x]=lowlink[x]=++dfn_clock; 4 stac.push_back(x); 5 for(i... 阅读全文
posted @ 2015-07-07 12:18 xcw0754 阅读(178) 评论(0) 推荐(0)
摘要:(1)求割点和桥的方法是tarjan算法,刘汝佳训练指南p314。 【割点】可以将两个【点双连通分量】隔开来,因为仅一个【点双连通分量】中肯定无割点,那么每两个点对都同时处于若干个简单环中才能当一个点撤掉仍然可以互通。 【桥】可以将两个【边双连通分量】隔开来,因为仅仅一个【边双连通分量】中肯定无... 阅读全文
posted @ 2015-07-04 13:08 xcw0754 阅读(336) 评论(0) 推荐(0)
摘要:先看如下的两个定义: 点-双连通图:一个连通的无向图内部没有割点,那么该图是点-双连通图。 注意:孤立点,以及两点一边这两种图都是点-双连通的,因为它们都是内部无割点。 边-双连通图:一个连通的无向图内部没有桥,那么该图就是边-双连通图。 注意:孤立点是边-双连通的,但是两点一边不是边-双连通的。 阅读全文
posted @ 2015-07-02 17:43 xcw0754 阅读(1077) 评论(1) 推荐(0)
摘要:最小边覆盖= 最大独立集 = |V| - 最大匹配数 这个是在原图是二分图上进行的 最小路径覆盖和最小边覆盖不同,不要求给的图是二分图,而是要求是N x N的有向图,不能有环,然后根据原图构造二分图,构造方法是将点一分为二,如,i分为i1和i2然后如果i和j有边,那么就在i1和j2之间连一条边。... 阅读全文
posted @ 2015-06-30 15:52 xcw0754 阅读(202) 评论(0) 推荐(0)
摘要:转自:http://blog.csdn.net/dark_scope/article/details/8880547【书本上的算法往往讲得非常复杂,我和我的朋友计划用一些简单通俗的例子来描述算法的流程】匈牙利算法是由匈牙利数学家Edmonds于1965年提出,因而得名。匈牙利算法是基于Hall定理中... 阅读全文
posted @ 2015-06-30 15:39 xcw0754 阅读(227) 评论(0) 推荐(0)
摘要:转自http://blog.csdn.net/dellaserss/article/details/7724401 并查集是我暑假从高手那里学到的一招,觉得真是太精妙的设计了。以前我无法解决的一类问题竟然可以用如此简单高效的方法搞定。不分享出来真是对不起party了。(party:我靠,关我嘛事啊? 阅读全文
posted @ 2015-06-29 16:40 xcw0754 阅读(140) 评论(0) 推荐(0)
摘要:问题4:怎样求一般的多项式当时的值?求的值时,即则要求值只需要做n次乘法,n次加法。这种算法是由南宋大数学家秦九韶在他的《数书九章》中首先介绍,我们把这种计算方法叫做秦九韶算法。介绍南宋大数学家秦九韶秦九韶(1208年-1261年)南宋官员、数学家,与李冶、杨辉、朱世杰并称宋元数学四大家。主要成就:... 阅读全文
posted @ 2015-05-27 23:36 xcw0754 阅读(1944) 评论(0) 推荐(0)
摘要:版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明http://www.blogbus.com/yjq24-logs/42653430.html 上次说了胜态和必败态,还记得最后的练习么?桌子上有15个石子,每人每次可以拿去1个或3个石子,拿走最后一个石子的人赢,列出所有的必败态:0, 阅读全文
posted @ 2015-05-14 18:09 xcw0754 阅读(768) 评论(0) 推荐(0)
摘要:版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明http://yjq24.blogbus.com/logs/42826226.html大致上是这样的:有两堆石子,不妨先认为一堆有10,另一堆有15个,双方轮流取走一些石子,合法的取法有如下两种:1)在一堆石子中取走任意多颗;2)在两堆 阅读全文
posted @ 2015-05-14 18:05 xcw0754 阅读(919) 评论(0) 推荐(0)