一个简单的ACM学习内容规划
ACM学习内容顺序规划〇、大致思路
[*]想用书的话可以用书,不用也行,推荐几本:《算法竞赛进阶指南》、《信息学奥赛一本通》、《深入浅出程序设计竞赛》(洛谷首页推荐的书,也不赖)、《算法竞赛入门经典》(刘汝佳编著,不过有点老了)(记得根据自己需求选择)
[*]可以上oiwiki学一些知识和算法:oi-wiki.org,上面有个学习路线可以参考一下,也可以在博客园找一些讲算法的高质量博客
[*]有条件的可以报课学,比如51nod上面的课程(顺便提一嘴这上面的题的数学思维很有意思)
[*]学习内容主要可以分成三部分:基础语法和STL库、数据结构、算法
[*]学习内容的话,先学会C++的基本语法,然后学STL库的使用,可以根据对应的容器和算法找几道对应的题练一练;之后就是学习各种数据结构和算法,可能还需要单独学一些数论的知识
[*]大体学习过程就是:学数据结构和算法,找一堆对应的题练,练完可以看看题解之类的(但是不要抄)学习不同的思路和方法;练的差不多了可以尝试参加一些ACM模拟赛(很多平台上都会有),熟悉一下比赛流程和规则
[*]比赛和题可以找一些online judge(oj)网站,找的时候有专题可以找专题,没有的话可以关键词搜索,然后按照难度排序或者直接找对应的难度进行练习。推荐一些oj网站:
洛谷
codeforces
atcoder 其中abc的题一般是模板题,arc的题是短小思维题
常见的还有leetcode、libreoj、牛客网、51nod等等很多很多,他们各有特色,可以参考oiwiki-学习资源
一、基础准备
[*]编程语言
[*]C++基础语法(可以参考oiwiki上的C++基础部分内容)
[*]STL库使用,包括STL容器和STL算法两部分,把它们用好可以省很多事情,当然有时也需要会自己写这些东西。此外还有string和pair两种C++十分常用的结构(模板),(oiwiki上面单独列出来了,这里提一下)
常用的STL容器有:vector,map,set,queue,deque,priority_queue,stack,list,还需要了解迭代器的基础使用和自定义比较方法;简单的重载运算符也需要掌握。
常用的STL算法有:sort,stable_sort,lower_bound,upper_bound,unique,find,可能还会用到find,reverse,next_permutation,prev_permutation等等
当然这些东西其实很多,也没必要一下学完,可以慢慢学,先去学数据结构和算法;学的时候会慢慢体会到它们的用处的
[*]数学基础
[*]快速幂、素数判断、GCD/LCM、其他简单的数论基础
[*]排列组合基础
[*]进制、位运算
二、简单算法
[*]算法复杂度
这玩意深究很麻烦,但是至少要先了解时间复杂度和空间复杂度的大致计算,会计算一些常见的时间和空间,因为实际题目是对程序有占用时间和空间要求的,要根据这些要求和数据规模来选择合适的算法和优化方式,这是学习oi十分重要的也是最基础的知识
[*]最基本的算法
排序、模拟、枚举、双指针、前缀和&差分、二分&三分、递归&分治(后面这两组也可以是解题思想,是可以一以贯之的思想),稍微麻烦一些的还有倍增、构造等等
[*]进阶的算法
贪心、动态规划、位运算、素数筛法
[*]杂项
高精度、约瑟夫算法、表达式求值、快速幂与矩阵快速幂
三、数据结构与算法
接下来就要结合一些数据结构来进行算法学习了。你会逐渐发现数据结构的重要性。
[*]简单图论 :图的概念、储存、遍历(BFS,DFS及其剪枝)、拓扑排序、各种图的最短路算法、回溯法
[*]单调队列、单调栈、滑动窗口、简单的链表使用、堆(小顶堆、大顶堆、二叉堆)
[*]简单的字符串处理以及string中的函数
[*]最小生成树、并查集
[*]线段树和树状数组
[*]st表、LCA
[*]位运算和状态压缩
四、进一步学习
上面的内容应该是比较基础的内容了,接下来就是进一步的学习,还没有列完orz,可以先学习上面的内容。
[*]字符串:kmp,manacher,hash,trie,acam,pam,sa,sam
[*]计算几何基础
[*]图论
[*]概率期望、组合
[*]博弈论
[*]多项式、FFT、NTT、莫反、狄利克雷卷积、杜教筛
[*]离线算法:分块、莫队
[*]基础数论
[*]可持久化
五、写在最后
算法竞赛是一个需要长期练习、不断学习的东西,还需要大量的经验和总结,因此不要着急,多多刷题,有问题多问多上oiwiki和博客园查,多看看苣佬的代码然后膜就完了
很多东西可能会遗漏,有错误和建议请各位大佬及时指出orz
附录:
[*]ACM板子
感谢dalao们的贡献:cjh,wyb,
挂个友链:https://www.cnblogs.com/-cchen-
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页:
[1]