ACM入门步骤(一)

一般的入门顺序:

0. C语言的基本语法(或者直接开C++也行,当一个java选手可能会更受欢迎,并且以后工作好找,但是难度有点大),【参考书籍:刘汝佳的《算法竞赛入门经典》,C++入门可以考虑《c++ primer plus》,java选手可以考虑《think in java》or中文版《java编程思想》,请远离谭浩强...】
可以选择切一些特别水的题巩固以及适应一下ACM中常见的输入输出格式...例如杭电著名的100题 Problem Set
1. 一些基本算法和数据结构(队列、栈、树、图、并查集、堆、DFS、BFS、最短路、最小生成树、拓扑排序、动态规划、贪心、搜索、KMP、哈希、Trie、AC自动机、快速幂、逆元、费马小定理、欧拉函数、素数筛选、分解质因数)你可以找两个小伙伴一起分工合作,各自认领专题【参考书籍:刘汝佳《算法竞赛入门经典第二版》or《算法竞赛训练手册》,《算法导论》】这时候可以刷的题就多了,你可以选择一些专题进行突破,学习一下技巧。例如
[kuangbin带你飞]专题一 简单搜索
[kuangbin带你飞]专题四 最短路练习
[kuangbin带你飞]专题五 并查集
[kuangbin带你飞]专题六 最小生成树
[kuangbin带你飞]专题十二 基础DP1
[kuangbin带你飞]专题十四 数论基础
[kuangbin带你飞]专题十六 KMP & 扩展KMP & Manacher
[kuangbin带你飞]专题十七 AC自动机
如果这些你和你的小伙伴都能熟悉掌握,并且能够尽快写出来,那么没有意外的话就可以在网络赛中拿到现场赛的门票(当然还得看出题人的风格...)。
2. 一些进阶的算法以及复杂一些的数据结构(树状数组 线段树 平衡树 后缀数组 二分图匹配 网络流 费用流 割点 桥 强联通 双联通 最近公共祖先 四大DP(数位dp 区间dp 状压dp 概率dp) 博弈论SG函数
【参考资料:各种博客......】
[kuangbin带你飞]专题七 线段树
[kuangbin带你飞]专题九 连通图
[kuangbin带你飞]专题十 匹配问题
[kuangbin带你飞]专题十一 网络流
[kuangbin带你飞]专题十五 数位DP
[kuangbin带你飞]专题十八 后缀数组
[kuangbin带你飞]专题二十一 概率&期望
[kuangbin带你飞]专题二十二 区间DP
这些掌握之后在现场赛中拿到牌子应该就没什么问题了,发挥出色还能拿到银牌。。。不过如果遇到比较凶残的赛区...
2.5 这时候如果开始组队了,就可以去刷一些套题了,例如Contests - Virtual Judge
这里每一场比赛都是过去真实发生的录像,你可以clone之后和自己的队友一起实操一下。

3.更高深的技巧,更复杂的数据结构(树链剖分,动态树,可持久化线段树,DLX,后缀自动机,回文树,斜率优化/单调队列优化/四边形优化DP,插头dp,莫比乌斯反演......)
这部分最能体现人与人的差异了...智商碾压一般就在这部分。而要想拿到金牌,一般来说这些知识都要尽可能掌握。
【参考资料:各种论文,解题报告】
这部分的题目比较杂,因此请自行去vjudge上查找....

3.5 同2.5,并且中国国内的比赛如果已经满足不了你,你可以去 或者Gym - Codeforces上找到全世界的区域赛的题目,不过题解就不怎么保证了...

也许你会觉得性价比很低,学这么多东西,才"有可能”拿到牌子,但是收获的不一定是物质的牌子,还有学习过程的苦辣酸甜的经历(例如各种WA TLE RE MLE 之后的一次AC),还有和基友一起并肩作战切套题的同甘共苦,而且还锻炼了自己的学习能力(善用百度,谷歌,维基百科)。
所以
Good Luck and Have Fun.

再补充一下:
这些算法都是说着容易,但是灵活搭配用起来难,然后还能在一定时间内写出来,并顺利通过数据测试拿到AC更难。
由于大家手上的模板越来越强大,区域赛一般都不会出现裸的模板题了,一旦出现,肯定就是被大家骂回家的存在。所以在综合训练的过程中,尽量选择需要动脑的题目,不要一昧追求直接贴一个模板上来AC走人特别爽的题目。
一般比较需要动脑的题目类型:贪心,动态规划(最好需要加上优化的),组合数学(推组合数公式,各种等价变换),图论(网络流,最短路,匹配)的各种建图过程。。。
虽然说年轻人要少水群,多做题,才能进Finals——kuangbin。但是一直闭门单刷也不是一件好事,还是要和大家多多交流心得,这样才能避免自己陷入一个瓶颈。
原文地址:https://www.cnblogs.com/xzxl/p/7219075.html