温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

搞定编程大赛必知哪10个算法?

发布时间:2020-07-16 20:02:11 来源:网络 阅读:260 作者:大水牛牛 栏目:移动开发

再没有比算法更让人头疼的东西了吧!

 

       前两天参加了一个编程大赛http://www.ijiami.cn/newsInfo?id=519&v=2,有感于算法,所以整理了这篇关于编程竞赛的10个算法。

 

       动态规划(DP)似乎占据了大部分的编程竞赛题目,乃至三分之一。当然,DP也不是一个学一次就Ok的单一算法。

这还取决于你是否把数据结构与算法放在同一个等级中考虑。如果你想要在编程竞赛中一展风采的话,当然,有些数据结构是你应该熟悉的。其中最重要的有范围树(Range Tree,也被称为线段树或区间树)和树状数组(BITs),也被称作Fenwick树。除此之外,许多DP算法使用了一个前缀和数组(prefix sum array)。

能想到的最精华的单一算法如下所列,排名不分先后。绝大多数非动态规划问题似乎都是各种ad hoc网络与数据结构,所以你只需要练习练习以熟练掌握它们。

(再一次声明,我仅列出了满足如下性质的算法:有单一输入集;计算输入集的某个函数;不携带输入值之间的状态。这些性质将下面的算法与数据结构区分开来。由定义,数据结构要保留状态以及算法的等级,还有像是DP这样的算法技术,它们并没有前者所计算的某个具体函数。)

 

1.Eratosthenes筛法,或另一种素数筛法

2.深度优先搜索

3.广度优先搜索

4.Dijkstra算法

5.Floyd–Warshall 算法

6.Either Kruskal算法 或称 Prim算法

7.一些拓扑排序的实现,比如使用DFS

8.凸包(我推荐单调链算法)

9.坐标压缩

10.Edmonds–Karp,或者Ford–Fulkerson方法的另一种实现;亦或预流推进算法;又或者,如果你在准备ACM codebook,那么就Dinic算法。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI