1.语言:
以下刷题常用,先熟练掌握。
C++容器vector、list、stack、queue、priority_queue、set、pair、map
C++算法库algorithm //入门阶段刷题还是建议不要用这些偷懒
Java的BigInterger、BigDecimal(高精度要用)
2.书籍推荐:
算法导论 科曼
算法竞赛入门经典 刘汝佳
算法竞赛入门经典——训练指南 刘汝佳
算法艺术与信息学竞赛 刘汝佳
数据结构(C++语言描述) 维斯
具体数学 高德纳
程序设计中的组合数学 吴文虎
数论概论 西尔弗曼
3.入门知识点归纳:
暴力与搜索
回溯
排列
子集遍历
广度优先(单向、双向) //BFS
深度优先 //DFS
带权优先
基本算法
Hash
线段树 索引树
并查集
LCA与RMQ
伸展树
Dancing-Link
动态规划
1维
2维
树形
子集与状态压缩
背包
单调队列优化
斜率优化
四边形不等式
图论
最短路Dijkstra //常用,必须能够熟练变形
最短路Bellman-Ford //支持负权和负环处理
最小生成树Prim //常用,必须能够熟练变形
最小生成树Kruskal //常用,必须能够熟练变形
最小支配集
最大独立集
最小覆盖集
最长路
最大流 //最小费用最大流很常用
二分图匹配 //带权和不带权,即匈牙利、EK
拓扑排序
强连通
重连通
2-SAT
字符串
AC自动机
后缀数组、后缀自动机
Prefix function
Z function //即extended KMP
RK-hash
数论
扩展欧几里德 //解方程、求逆元,非常常用
筛素数
快速判素数
素因子快速分解
欧拉函数
中国剩余定理
离散对数
数值计算
矩阵快速幂
三分求凸函数极值
高斯消元
FFT
组合数学与博弈
置换群 //Polya计数
Fibonacci数
Catalan数
Bell数
stirling数
容斥原理
Bash Wythoff Nim Game
SG函数
计算几何
基本几何运算
凸包
矩形交
矩形并
圆交
圆并
半平面交
最近点对
旋转卡壳
最远点对
基础3D几何
空间点面
空间线面
平移
拉伸
翻转
任意轴旋转
3D凸包