
算法学习资料
文章平均质量分 78
Dinosoft
囧轩,男。 小学参加数学奥赛,拿了一些奖; 初中买了书自学c语言和photoshop,玩过flash, dreamweaver,3D max 等东东; 高中自学Pascal,参加NOIP,开始接触数据结构 算法,没拿什么奖,要准备高考,伤不起; 大学参加acm,拿了点奖。业余做做网站,弹弹吉他,现在下岗待业。 -----一个苦B的IT民工走过的路。
展开
-
一般筛法求素数+快速线性筛法求素数
TAG 素数 数论素数总是一个比较常涉及到的内容,掌握求素数的方法是一项基本功。基本原则就是题目如果只需要判断少量数字是否为素数,直接枚举因子2 。。N^(0.5) ,看看能否整除N。如果需要判断的次数较多,则先用下面介绍的办法预处理。 一般的线性筛法首先先介绍一般的线性筛法求素数void make_prime() { memset原创 2010-08-22 01:28:00 · 50650 阅读 · 10 评论 -
博弈论的一点资料,关于NIM和SG函数
最近手贱,又整acm的东西了。。。说到博弈论,就想起了Alice和Bob。比如Sicily 1798. Alice and Bob之前做过一些题,可以构造出必胜的走法,需要技巧,遇到复杂一点的游戏规则就没辙了,所以还是得系统学一下一些博弈问题的解法。看到有人提起SG函原创 2011-09-22 01:30:51 · 7735 阅读 · 2 评论 -
卡特兰数一个有趣的应用模型及小结
偶然看到的题目,居然可以用卡特兰数解。12个人排两排,每排都按身高由小到大排,要求第二排相应位置上每个人的身高都比第一排上的人要高,问有多少种排法? 卡特兰数的一个模型就是括号匹配。先给括号标号(序号对应身高),我们把左括号当作第一排的人,右括号当作第二排的人。 1原创 2011-06-15 12:07:00 · 2645 阅读 · 0 评论 -
割点与桥
<br />TAG 图论 割点 桥<br />原帖地址:http://www.cppblog.com/Icyflame/archive/2009/07/05/89227.html<br />/*<br />我的理解:刚开始思考怎么算割点,我的思路是如果去掉该点,再从该节点的任意一个邻接节点出发,如果不能遍历其他全部节点,那该点就是割点。显然很蛋疼,每个点都要去dfs一次。这里面有很多冗余运算。<br />举一个例子,一条链,0-1-2-3-...-n 这样,从0开始,每次遍历都是相似的,后面的被遍历很多遍转载 2011-04-04 03:53:00 · 2237 阅读 · 0 评论 -
用位运算巧解元素出现次数问题
先举道简单的题:有一些筷子,长短不一,长度一样的能组成一双。现在刚好有一堆筷子,数量为奇数,而且刚好只有一只筷子落单,其余都成双。请找出这只落单的筷子的长度。在acm的书看到有类似的题目,是用位运算解的,挺巧妙的。有几种办法:先排序,再扫描一次。如果扫描到长度相同的连续一段个数为奇数,则输出解。例如1,1,2,2,2,3。。。 2出现的次数为3,奇数,输出2,可以停了。O(NlogN) (用于排序)筷子长度的范围比较小的话,可以开个数组。a[i] 记录长度为i的筷子出现的次数,累加后,a[i]=a[i原创 2011-05-24 20:54:00 · 5584 阅读 · 4 评论 -
可视化数据结构和算法(强烈推荐给初学者)
我以前学数据结构和算法时,有些内容感觉很难懂,自己花了很多时间琢磨,最后才搞清楚。数据结构和算法用语言描述的话,比较抽象,而且细节无法描述得太具体清楚。会让人疑问,到底具体怎么操作。用伪代码/代码描述,过程是清晰了,但是又不好懂,时常一行关键代码会让你想得焦头烂额。比较好的办法,就是举个例子,实际演示一遍,这样对整个算法有一个大概的认识后,帮助进一步理解。 但对于新手来说,按照伪代码自己动手演示,难度颇大。好在国外有好事之徒做好了演示动画,相当适合初学者学习,强烈推荐!http://www.cs.usfca原创 2011-05-23 01:07:00 · 3282 阅读 · 1 评论