2010年8月24日
摘要: 算法的学习没有尽头!前面还有无尽远的路!  前两天做一道题的时候看到划分树,找到小航航大牛的博客看了一下,很神奇的算法,总的来说就是一个逆归并的过程,从大到小的归并排序,建立线段树,记录每个区间中被分到左子树的数据,然后查询的时候就可以用log(n)的时间查询任意区间第K大数了。由于本人缺乏创新性,代码严重抄袭小航航牛,不再赘述!  回头用划分树做了北大的2104和杭电的3473,速度还算可以,这... 阅读全文
posted @ 2010-08-24 21:27 looker 阅读(263) 评论(0) 推荐(0) 编辑
  2010年8月17日
摘要: 求最大流的算法有好多种,sap,dinic,啥的只要会原理基本上就能想的出来,网络流,有时候就难在构建模型上,怎么构建流网络保证网络的正确性及最大流的最优性是构图题的重要特点!今天做了两道构图题,不得不说这类题很锻炼人的思维能力,如下:pku 3281:  农场主给牛牛们准备来了f种食物和d种饮料,每种只有一份,牛牛们对不同的食物和饮料各有所爱,求能找到理想中的食物和饮料的牛牛的最大数目。  这道... 阅读全文
posted @ 2010-08-17 16:31 looker 阅读(652) 评论(0) 推荐(0) 编辑
  2010年8月15日
摘要: 忙碌了以下午,终于在吃饭之前过了这道题,很水的一道题,悲剧的是我看错了题。。。。。。  最大流的用处真的很广,只要数学模型建的好,最大流就会变成解决问题的犀利武器,这道题让求两点之间所有的最短路的数目,涉及到了两个知识点:  1.如何判断一条边是否在最短路上,floyd定理给出了计算方法:一条边v(i,j)是从s到t的最短路径上的边当且仅当G[s,i]+W[i,j]+G[j,t]=G[s,t],G... 阅读全文
posted @ 2010-08-15 17:57 looker 阅读(322) 评论(0) 推荐(0) 编辑
摘要: 欧拉回路,就是由一点出发,每一条边走且只走一次(顶点可以走多次)然后回到起点的路径,无向图是欧拉图当且仅当他的所有的顶点点的度为偶数,一个有向图是欧拉图,当且仅当该图所有顶点度数都是0。那么混合图的欧拉判定。。。  混合图就是一个含有有向边和无向边的图,混合图判欧拉回路时用的是最大流,至于原理。。。。  转自牛人博客:  把该图的无向边随便定向,计算每个点的入度和出度。如果有某个点出入度之差为奇数... 阅读全文
posted @ 2010-08-15 10:37 looker 阅读(1490) 评论(3) 推荐(0) 编辑
  2010年8月13日
摘要: pku 3277 离散化建树 阅读全文
posted @ 2010-08-13 12:10 looker 阅读(392) 评论(0) 推荐(0) 编辑
  2010年8月10日
摘要: 悲剧的比赛过后,觉得自己有必要学习一下差分约束系统,看了一下,有好多熟悉的影子,线性规划,网络流,最短路,算是算法的相通性吧。差分约束系统关键是建立数学模型,模型建立对了后面的就简单了!对于他的原理,我就不在赘述了,随便一搜好几页。  对于用差分系统求最优解的问题,我还是不太明白,我承认我很笨,呵呵!对于已建好的模型,源点以右的可行解(假设有可行解)是最大可行解,以左是最小可行解,因为建图的时候所... 阅读全文
posted @ 2010-08-10 17:53 looker 阅读(417) 评论(0) 推荐(0) 编辑
  2010年7月25日
摘要: A题:Self Numbers 基本上都做出来的一题,用的就是素数筛选的方法,当扫到一个位置n时,如果它是真,就把d(n)置假,然后是d(d(n)),然后是d(d(d(n)))....一直到大于等于10000停止,然后数组中值为1的就是self-numbers了。另外由于数据规模的原因,本题还可以暴力过,因为判断一个数n是不是self-numbers,只要判断它前面的某一个数能不能用d(n)的公式... 阅读全文
posted @ 2010-07-25 20:48 looker 阅读(309) 评论(0) 推荐(0) 编辑
  2010年7月24日
摘要: 后缀数组的学习不得不告一段落了,还有好多要学的东西呢,最重要的是没有那么多时间了,人生苦短啊!  总的来说学的还比较顺利,除了没有深入研究以外个人感觉还行,做题的时候发现了一个奇怪的现象,别人认为很简单的题我就是做不会,别人认为很难得我却能很快找到思路,比如pku3294就是后者,好吧,就从这儿说起。  这一题的意思的是给你n个字符串,让你求最长的至少在超过一半的串中出现的子串。一看到这个题就想到... 阅读全文
posted @ 2010-07-24 17:46 looker 阅读(237) 评论(0) 推荐(0) 编辑
  2010年7月21日
摘要: (1) 计算阶乘末尾第一个非0数字:这是一个比较经典的问题,比较复杂的算法是利用一个艰难的数学公式,可惜我不会,从网上的资料学习中,整理出下面这个简单易懂的算法:观察n!,可以发现在乘的过程中,对于任意 n > 1,n!的末尾第一个非0数字都是偶数。我们只需保留最后一位非零数。当要乘的数中含有因数5时,我们可以把所有的因数5都当作8来乘。这是因为:...x2*5=...10(舍)或...60... 阅读全文
posted @ 2010-07-21 23:23 looker 阅读(386) 评论(0) 推荐(0) 编辑
摘要: AC自动机,名字很酷(我就是奔着这名字去的),其实就比字典树多了一个fail指针,什么是fail指针呢,就是串对字典树匹配失配时字典树节点下一步往哪指。是不是和KMP有点像,呵呵,没错,就是KMP的思想,假设该节点是u,它的fail指针指向v,v就是一个和u的字母一样,并且从根出发到v形成的字符串和从根到u的路径上的某一处到u形成的字符串相同的节点。呵呵,有点麻烦,其实求的时候就是一个递推的过程,... 阅读全文
posted @ 2010-07-21 11:14 looker 阅读(329) 评论(0) 推荐(0) 编辑