在大学计算机相关专业学习中,参与算法竞赛越来越受到关注,成为很多人的选择。作为大学开始接触算法,几乎完全自我探索、广泛学习、坚持不懈,终于也有幸参加过 ICPC 比赛的算法竞赛选手,本人谨以此篇,分享算法学习的心得,面向算法零基础的同学,整理相关知识、资源与练习思路。希望各位同学能感受到算法的美感与学习的乐趣,最终在竞赛中有所收获。

    不过,如果用非功利的眼光来看,算法练习本身有诸多益处。算法思维是理解问题、解决问题的利器,编程实践能力会加深对代码和语言的理解,并带来跨语言的灵活感,我常常把这些比作内功。学好算法,并不一定会用到所学方法解决问题,但在从今往后编写程序的任何时候都能为你提供一种支持与鼓舞。

    学习算法最重要的还是充分利用互联网上的优质资源,本文也做出诚心推荐。各路的大神为我们提供了绝佳的学习资源,其题解质量在笔者之上者不计其数。只是初学者往往感到无从下手,很难找到真正适合自己当前阶段的资源。

    本篇面向背景为计算机相关专业,有 C / C++ 编程语言基础,能用程序解决基本问题,但没有算法竞赛经验的同学。我们提供以编程实践练习为基础的练习路线,普及相关知识,系统地介绍基础算法及其思想,并提供经过验证的高质量例题、代码及竞赛使用的模板。读者可在完成例题的基础上,尝试稍有变化及难度更高的题目。

    根据本篇路线,您将以蓝桥杯比赛为起点,逐步迈向能够练习 ACM 级题目的水平。我们有意增加了例题中蓝桥杯系统的题目数量,并挑选了部分比赛真题。在介绍算法后,我们特别整理了专项分析的章节,其很大程度上直接对应了蓝桥杯的特色题型。

    如果您能熟练掌握本篇涉及内容,您将具备自主探索进一步学习算法的能力,完全可以脱离本篇,寻求进一步的提升。祝您迎来更广阔的天空。

    本人谨根据自我探索的经验,尝试对算法的练习道路做出分析,期望以此得到可以延续的价值。尽管极力细心编撰,由于个人能力所限,难免有所纰漏,不足之处还望批评指正。