zoukankan      html  css  js  c++  java
  • 算法分类(写这个是为了让自己以后学算法的时候有针对性条理性)

    今天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.

  • 相关阅读:
    mailing list的原理
    关于结构体的使用
    c++ template
    IDA逆向
    重定向 301 302
    linux信号
    cmake编译选项
    mongodb超时
    普通java工程的resources目录寻址
    Vue基础---->VueJS的使用(二)
  • 原文地址:https://www.cnblogs.com/rain-1/p/4763239.html
Copyright © 2011-2022 走看看