想要在ACM之路上快速进步,你需要明确学习路线,掌握一些基础知识和基本技能。首先,建议先学习C语言,掌握基本语法,循环,指针,输入输出等基础知识。
其次,建议学习一些C++的知识,主要是STL,vector,set,map等,这些都是ACM比赛常用的数据结构。此外,推荐学习数据结构,并刷一些菜鸟题来建立自信心。
当你掌握了基本的知识和技能,就可以学习一些高级算法知识了。建议从专业竞赛的技巧和知识入手,结合练习来提高自己。反复刷题,卡时间,去Codeforce等网站打比赛,相信你能得到更多的锻炼和提高。
在这里,为大家推荐一些具体的课程资料,包括北京大学的免费系列课程“程序设计与算法”,清华大学邓俊晖教授的数据结构课程等。此外,还推荐大家配合刷LeetCode的专题,比如数组,字符串。二叉树,刷个100道,相信你的水平也会得到提高。对于专业书籍,推荐挑战程序设计竞赛、算法竞赛入门经典、算法导论等。
如果你想要更好的备战ACM,需要掌握一些高级算法知识。比如,最短路(Floyd、Dijstra,BellmanFord)、最小生成树、大数(高精度)加减乘除、二分查找等,这些都是ACM比赛中的常用算法。在进阶阶段,你还需要熟悉动态规划的各个典型,如LCS、最长递增子串、三角剖分、记忆化DP等。同时,博弈类算法、很大团、很大独立集、双向广度搜索、A*算法、最小耗散优先等也是你需要掌握的算法。多做难题,多参加网上的比赛,感受一下比赛的气氛,评估自己的实力,这些都是非常重要的。如果你对ACM要求更高,建议了解一些高级算法,如线段树、贪心算法、哈希算法、网络流以及计算几何等。相信只要你努力学习、认真实践,就一定可以在ACM领域中大展拳脚!
如果你到了大三还没有特别好的成绩,就赶紧转工程吧。 ACM的路漫漫,如果你想要在这条路上走得更远、更高,就需要付出更多的努力。相信只要你肯努力,脚踏实地,就一定能取得更好的成果!