算法分类(写这个是为了让自己以后学算法的时候有针对性条理性)

今天acm的学长帮我们总结了以下算法,天啊,我发现自己有好多好多不会的,有的甚至没听说过,所以我把这些记了下来,以后没事儿的时候照着这个补补自己薄弱的部分

 

基本算法:这个比较多比较随,自己多做题多总结了,大概是排序贪心之类。

 

数据结构:都说“算法 + 数据结构 = 程序”, 数据结构是比较重要的,字典树(指针数组)(相比于并查集来说字典树比较局限,但这些都是最基本的,是一定要掌握的),重点是对每一个节点的修改,还有并查集,这个我感受比较深刻,遇到的好多题都要用到并查集,但是现在还不会,真是的,好好学学,学长说还并查集适用范围较广呢。

 

图论:分拓扑排序,并查集,最小生成树,最短路……学长说图论的三个经典算法一定要掌握,有floyd算法(三重for循环实现),Dijkstra算法(贪心),贝尔曼-福特算法(学长说这个实在不行看懂思想也行,不过我觉得学长们都好厉害啊,他们肯定也是花了时间看的,我也要看看,变的像他们那么厉害),但是我去,这些我只听说过Dijkstra算法,当时用的还是理解了的,现在的话估计写不出来了,等我把它们总结下,好好熟练熟练,对了,他还说到spfa算法,SPFA(Shortest Path Faster Algorithm)(队列优化)算法是求单源最短路径的一种算法,是由贝尔曼福特算法衍生的,效率较高,类似于bfs,(555555~~~~~~其实bfs我还没掌握)。

 

动态规划:这个算法是非常重要的,几乎每一次竞赛都会出一道这样的题,重要的是想得到这个算法,还有背包问题是一定一定要掌握的。其中dfs和bfs加记忆化可以变身dp,类似dp但是也有不同(只是听学长说,然而我并没有试过)。

 

数论:这里边的东西就比较多了,如果只是听算法课的话也就是会一点点简单的而已,这个要自己翻书去学去看。gcd和扩展gcd,中国剩余定理,逆元,素数……翻书学。

 

树状数组和线段树(较难):我不知道这个该分到哪一类,于是单独列出来了,反正听学长说这个也是比较难的,研究的话也要很久,不过还是要研究滴!

 

组合数学:这里面的知识是比较多的,这是我自己的感觉,好多题都用到了,然而我到现在也一知半解,很多东西很难理解,特别是母函数什么的要几重for循环,真实让我头都大了。但是真的太重要了,我觉得。

 

搜索:bfs,dfs……以及衍生出来的算法,最基本的一定要掌握。

 

计算几何:

博弈:

后两个讲算法的时候我没来或者没听,所以……我也说不出什么,以后好好看咯,以前总想着现在不听下课我再补补,其实下课之后自己根本不会再去碰那些东西了,所以以后不管什么东西,不能想着以后,想起来就去做,雷厉风行,嘿嘿。有句话怎么说来着,现在不走,以后跑也赶不上别人。

 

总之呢,这几天对这些算法有着疯狂的兴趣,觉得挺有意思的,佳丽说我比较努力,也许吧,其实她不知道,我只是这段时间有兴趣而已,不管什么事情,只要我有兴趣,就会疯狂去做,不管其他的东西,如果是让我觉得枯燥的事情,我就怎么也做不好罗。

这段时间很相信一句话,现在的生活都是自己的选择,我们在选择与被选择中生活着。对,这一刻,其实也是你的选择,每个人都用自己选择的方式生活在这个世界上,选择现在的生活我无怨无悔,没有遗憾,Everything is my choice! I love it.

 

posted on 2015-08-27 14:39  张明明_1  阅读(236)  评论(0编辑  收藏  举报

导航