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以后和本身的队友一块儿实操一下。php
3.更高深的技巧,更复杂的数据结构(树链剖分,动态树,可持久化线段树,DLX,后缀自动机,回文树,斜率优化/单调队列优化/四边形优化DP,插头dp,莫比乌斯反演......)
这部分最能体现人与人的差别了...智商碾压通常就在这部分。而要想拿到金牌,通常来讲这些知识都要尽量掌握。
【参考资料:各类论文,解题报告】
这部分的题目比较杂,所以请自行去vjudge上查找....java
3.5 同2.5,而且中国国内的比赛若是已经知足不了你,你能够去https://icpcarchive.ecs.baylor.edu/index.php 或者Gym - Codeforces上找到全世界的区域赛的题目,不过题解就不怎么保证了...c++
也许你会以为性价比很低,学这么多东西,才"有可能”拿到牌子,可是收获的不必定是物质的牌子,还有学习过程的苦辣酸甜的经历(例如各类WA TLE RE MLE 以后的一次AC),还有和基友一块儿并肩做战切套题的患难与共,并且还锻炼了本身的学习能力(善用百度,谷歌,维基百科)。
因此
Good Luck and Have Fun.算法