随笔分类 -  算法

算法
摘要:转自:http://www.cppblog.com/Yuan/archive/2011/02/23/140553.aspx如果目标也已知的话,用双向BFS能很大提高速度单向时,是b^len的扩展。双向的话,2*b^(len/2) 快了很多,特别是分支因子b较大时至于实现上,网上有些做法是用两个队列,交替节点搜索×,如下面的伪代码:while(!empty()){扩展正向一个节点遇到反向已经扩展的return扩展反向一个节点遇到正向已经扩展的return}但这种做法是有问题的,如下面的图:求S-T的最短路,交替节点搜索(一次正向节点,一次反向节点)时Step 1 : S –> 1 阅读全文
posted @ 2011-07-25 13:14 zqynux 阅读(915) 评论(0) 推荐(0)
摘要:转自:http://www.felix021.com/blog/read.php?1587 http://fayaa.com/code/view/13122/raw/ 这篇也不错,自己点开看吧: http://www.wutianqi.com/?p=1850今天回顾WOJ1398,发现了这个当时没有理解透彻的算法。看了好久好久,现在终于想明白了。试着把它写下来,让自己更明白。最长递增子序列,Longest Increasing Subsequence 下面我们简记为 LIS。排序+LCS算法 以及 DP算法就忽略了,这两个太容易理解了。假设存在一个序列d[1..9] = 2 1 5 3 6 . 阅读全文
posted @ 2011-07-12 19:18 zqynux 阅读(950) 评论(0) 推荐(0)
摘要:还是从原来的博客转一两篇有意义的过来吧! 最近USACO写到了(第三次)1.3.3,这一题(http://zqynux.blog.163.com/blog/static/16749959720109291375436/)我用的是我自己原创的一个算法(可能也有别人想到了,但是对于我来说,确实是我自己独立思考出来的),在此发表一下。 程序:输入:一行字符串,输出:最长的回文字符的长度以及把它们给输出来。 如: 输入:1596156432111234 输出:6 432111234回文的性质 首先先把题目撇开,单说回文数的性质,如abcba是一个长度为5的回文数,那它有什么性质呢? 回文数顾名思义,. 阅读全文
posted @ 2011-06-09 18:48 zqynux 阅读(623) 评论(0) 推荐(0)
摘要:第一节 快速排序 很久以前就学过快速排序,现在在这里简单的介绍一下吧。 快速排序是基于分治的一种排序算法,因为是分治思想的,所以它是一种非常快的算法。它的平均运行时间是O(N Log N),最坏的运行时间是O(N^2)。 算法的基本步骤如下,设S为待排序的集合,n为它的长度: 1、如果S长度(即n)为1或为0,那么立刻返回。 2、取S中任意一个元素为枢纽元。 3、将S分为两个集合:S1和S2,S1中所有元素都小于枢纽元,S2中所有元素都大于枢纽元。 4、将S1和S2分别再进行一次快速排序。 快排的思路可能有点难理解,我画几个图来说明吧。图.1-1 随机选取枢纽元图.1-2 将集合分为两个子集合 阅读全文
posted @ 2011-06-09 18:46 zqynux 阅读(526) 评论(0) 推荐(0)
摘要:本文章可以算是http://www.cnblogs.com/yylogo/archive/2011/06/06/SGU-106.html文章的子文章吧,剖析里面的扩展欧几里德。 首先要了解欧几里德公式。 题目里用到的定理大概有下面几个:对于等式ax+by=c,a,b,c皆为整数,c如果是gcd(a, b)的倍数,则方程有解,否则方程误解。 这一个的证明省略,我也不会。因为等式ax+by=gcd(a, b)必定有解(定理1),所以可以解出来,解法如下: 因为gcd(a, b) = gcd(b, a % b),所以有bx1+(a%b)y1=gcd(a,b),注意!此时x1并不等于x,y1也不等于. 阅读全文
posted @ 2011-06-09 15:08 zqynux 阅读(1578) 评论(0) 推荐(0)
摘要:欧几里德公式,用来计算两个整数的最大公约数,数论中相当重要的公式,其公式为:gcd(a, b)=gcd(b, a % b)gcd(a, 0)=a反复重复第一个步骤,直至出现第二种情况。证明:a可以表示成a = kb + r,则r = a mod b假设d是a,b的一个公约数,则有d|a, d|b,而r = a - kb,因此d|r因此d是(b,a mod b)的公约数假设d 是(b,a mod b)的公约数,则d | b , d |r ,但是a = kb +r因此d也是(a,b)的公约数因此(a,b)和(b,a mod b)的公约数是一样的,其最大公约数也必然相等,得证 阅读全文
posted @ 2011-06-07 11:55 zqynux 阅读(819) 评论(0) 推荐(0)
摘要:正在寻找我看的懂的证明。2011年6月6日Def: Phi(n) = # of factors a s.t. (a, n) = 1Thm: Let p1, p2... pk be all prime factors of n,then,Phi(n) = n(1 - 1/p1)(1 - 1/p2)... (1 - 1/pk).Proof 1:It suffices to show that1) Phi(p) = p2) Phi(p^k) = p^k - p^(k-1)3) Phi(ab) = Phi(a) * Phi(b), for (a, b)=1Proof 2:# of factors no 阅读全文
posted @ 2011-06-05 18:22 zqynux 阅读(588) 评论(0) 推荐(0)
摘要:http://www.cnblogs.com/yylogo/articles/Euler-diagram.html 这里介绍了一个例题,我把它抽象一下: 给出一个五位二进制数11110,按顺序4个4个读取就可以读出1111, 1110, 1101, 1011和0111,先读取第1个到第4个1111再读取第2个到第5个1110,再读取第3个到第1个(循环回来)1101,再从第4个到第2个,1011,再从第5个到第3个0111。 问, 如何安排16位2进制数,使之可以读取出16种不同的四位二进制数。 阅读全文
posted @ 2011-06-05 11:45 zqynux 阅读(498) 评论(0) 推荐(0)
摘要:转自: http://class.htu.cn/lisanshuxue/neirong/7_4.htm 1936年瑞士数学家列昂哈德·欧拉(Leonhard Euler)发表了图论的第一篇论文“哥尼斯堡七桥问题”。这个问题是这样的:哥尼斯堡城市有一条横贯全城的普雷格尔(Pregel)河,城的各部分用七座桥联接,每逢假日,城中居、民进行环城逛游,这样就产生了一个问题,能不能设计一次“遍游”,使得从某地出发对每座跨河桥只走一次,而在遍历了七桥之后却又能回到原地。在图7-4.1中画出了哥尼斯堡城图,城的四个陆地部分分别标以A、B、C、D。将陆地设想为图的结点,而把桥画成相应的连接边,这样城 阅读全文
posted @ 2011-06-04 18:32 zqynux 阅读(5672) 评论(0) 推荐(1)