采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
老师,我现在是一名大二的学生,我想多参加一些编程竞赛。我了解到除了这门课之外你还有还有LeetCode,以及算法与数据结构综合提升这两门课。我想请教一下关于在课程以及刷题这方面该怎么去做
首先,你应该认真学习最基础的算法与数据结构。整体,这门课程的内容和我的图论课程的内容,都需要掌握。
在这个基础上,Leetcode 是一个很好的开始。Leetcode 上的问题远远比 ACM 竞赛要简单,但尽管如此,没有竞赛基础的同学,从 Leetcode 开始做,是没有问题的。而且,如果你不参加竞赛的话,基本上刷 Leetcode 就够了。
如果你一定要参加竞赛,对于竞赛级别题目的练习,国内比较权威的教材,就是刘汝佳的这套书了:https://item.jd.com/36399547455.html 这套书的练习量极大。但基本可以说,如果都能刷完,应该能取得相当不错的成绩了。
注意的是,ACM 比赛涉及的范围极广,远远不是算法和数据结构可以涵盖的,还包括诸如离散,数论,图论,计算几何,等等的内容。刘汝佳的书应该算给出了一个大概的范围。对于每一部分,如果对基础知识不熟悉,可以再找专门的教材进行专项学习。
达到一定水平以后,也需要不断地参加比赛练习。算法竞赛级别的 OJ 非常多。我个人推荐两个。一个是 codeforces.com;一个是 codechef.com 每个月都有新的比赛,同时,近乎每场比赛都有题解。
这两个比赛都是英文版的。国内应该也有很多不错的 OJ,比如我上学的时候,POJ 和 HOJ 都不错。但是这么长时间,他们发展的如何,我也不了解了,而且可能也有一些新的后期之秀,对国内的情况我也不很了解。如果你希望在国内的 OJ 练习,你需要自己再调查一下,都有哪些 OJ,哪些 OJ 适合你。
最后,如果你们学校有 ACM 集训的话,想办法去参加。有教练指导,有环境支撑,通常都是事半功倍的。
我的课程远远达不到 ACM 水平,我的所有课程都是按照面试水平设计的,望知晓。
加油!:)
嗯嗯,谢谢老师
登录后可查看更多问答,登录/注册
动态数组/栈/队列/链表/BST/堆/线段树/Trie/并查集/AVL/红黑树…
10.4k 16
1.4k 17
1.3k 14