- 双向链表
- 单调队列,双端队列
- 单调栈
- 堆
- 带权并查集
- hash 表
- 双hash
- 树状数组
- 线段树合并
- 平衡树
- Treap 随机平衡二叉树
- Scapegoat Tree 替罪羊树
- 朝鲜树
- 块状数组,块状链表
- 树套树
- 线段树套线段树
- 线段树套平衡树
- 平衡树套线段树
- 6.可并堆
- 左偏树
- *配对堆
- KDtree,四分树
- 1.4 可持久化数据结构
- 可持久化线段树
- 主席树
- 可持久化平衡树
- 可持久化块状数组
- KMP
- AC 自动机
- 后缀数组
- *后缀树
- *后缀自动机
- 字典树 Trie
- 7.manacher
- prim
- kruskal
- 最短路
- 次短路
- K短路
- spfa
- dijkstra
- floyd
- 图的连通
- 连通分量
- 割点,割边
- 强联通
- 双联通
- 分量
- 最大子串和第k大
- 网络流
- 最大流
- 最小割
- 费用流
- 分数规划
- 树相关
- 树上倍增
- 最近公共祖先
- 树链剖分
- 树的分治算法(点分治,边分治)
- 动态树 (LCT,*树分块)
- prufer编码
- 拓扑排序
- 欧拉图
- 二分图
- *KM算法
- 匈牙利算法
- 最大匹配
- 最优匹配
- 1.筛法
- 斐蜀定理
- 更相减损术
- 欧拉函数与*降幂大法
- 费马小定理
- 排列组合
- lucas定理
- 乘法逆元
- 数学期望与概率
- 博弈论
- sg函数
- 树上删边游戏
- *拉格朗日乘子法
- 线性规划与网络流
- 单纯型线性规划
- 辛普森积分
- 模线性方程组
- 容斥原理与莫比乌斯反演
- 置换群
- 快速傅里叶变换
- *大步小步法
- 1.8 动态规划
- 一般,背包,状压,区间,环形,树形,数位动态规划
- 记忆化搜索
- 斯坦纳树
- 背包九讲
- 斜率优化与* 四边形不等式优化
- 环 + 外向树上的动态规划
- *插头动态规划
- 1.9 计算几何
- 计算几何基础
- 三维计算几何初步
- 梯形剖分与三角形剖分
- 旋转卡壳
- 半平面交
- pick定理
- 扫描线
- bfs,dfs
- A* 算法
- 迭代加深搜索,双向广搜
- 1.11 特殊算法
- 莫队算法,*树上莫队
- 模拟退火
- 爬山算法
- 随机增量法
- 1.12 其它重要工具与方法
- 1.模拟与贪心
- 二分,三分法
- 分治,CDQ分治
- 高精度
- 离线
- ST表
- 1.13 STL
- map
- priority_queue
- set
- bitset
- rope
- 1.14 非常见算法
- *朱刘算法
- *弦图与区间图
- }
- http://www.lydsy.com/JudgeOnline/problemset.php?search=OI
- http://www.lydsy.com/JudgeOnline/problemset.php?search=
- a)ext 欧几里德算法
- b)o(n) 筛法求素数 && o(n)->phi
- c) 康托展开
- d) 逆康托展开
- e) 同余定理
- f) 次方求模
- 莫比乌斯反衍
- 计算几何初步
- a) 三角形面积
- b) 三点顺序
- 学会简单计算程序的时间复杂度与空间复杂度
- 二分查找法
- 简单的排序算法
- a) 冒泡排序法
- b) 插入排序法
- 贪心算法经典题目
- 高等数学
- 学会使用简单的DOS命令(较重要)
- a) color/dir/copy/shutdown/mkdir(md)/rmdir(rd)/attrib/cd/
- c) 学会使用C语言调用DOS命令
- d) 学会在命令提示符下调用你自己用C语言编写的程序,并使用命令行参数给自己的程序传参(比如自己制作一个copyfile.exe实现与copy命令基本功能一致的功能)
- e) 学会编写bat批处理文件
- 学会编辑注册表(包括使用注册表编辑器regedit和使用DOS命令编辑注册表)
- }
- 大一下学期:{
- 学会BFS与DFS
- a) 迷宫求解(最少步数)
- c) 图像有用区域(NYOJ92)
- d) 树的前序中序后序遍历
- 动态规划(15题以上),要学会使用循环的方法写动态规划,同时也要学会使用记忆化搜索的方法。
- a) 最大子串和
- b) 最长公共子序列
- c) 最长单调递增子序列
- e) RMQ算法
- 学会分析与计算复杂程序的时间复杂度
- 学会使用栈与队列等线性存储结构
- 学会分治策略
- 排序算法
- a) 归并排序
- b) 快速排序
- c) 计数排序
- 数论
- a) 扩展欧几里德算法
- b) 求逆元
- 博弈论
- a) 博弈问题与SG函数的定义
- b) 多个博弈问题SG值的合并
- 图论:
- a) 图的邻接矩阵与邻接表两种常见存储方式
- b) 欧拉路的判定
- c) 单最短路bellman-ford算法dijkstra算法。
- d) 最小生成树的kruskal算法与prim算法。
- 学会使用C语言进行网络编程与多线程编程
- 高等数学
- 线性代数
- a) 明确线性代数的重要性,首先是课本必须学好
- b) 编写一个Matrix类,进行矩阵的各种操作,并求编写程序解线性方程组。
- c) 推荐做一两道“矩阵运算”分类下的题目。
- 以下为选修,随便选一两个学学即可:
- (较重要)使用C语言或C++编写简单程序来调用一些简单的windows API,或者在linux下进行linux系统调用,其目的是明白什么是API(应用程序接口)。
- 试着实现STL的一些基本容器和函数,使自己基本能看懂STL源码
- 图论
- a) 使用优先队列优化Dijkstra和Prim
- b) 单源最短路径之SPFA
- c) 差分约束系统
- d) 多源多点最短路径之FloydWarshall算法
- e) 求欧拉路(圈套圈算法)
- 进行复杂模拟题训练
- 拓扑排序
- 动态规划进阶
- a) 完全背包、多重背包等各种背包问题(参见背包九讲)
- b) POJ上完成一定数目的动态规划题目
- c) 状态压缩动态规划
- d) 树形动态规划
- 搜索
- a) 回溯法熟练应用
- b) 复杂的搜索题目练习
- c) 双向广度优先搜索
- d) 启发式搜索(包括A*算法,如八数码问题)
- 计算几何
- a) 判断点是否在线段上
- b) 判断线段相交
- c) 判断矩形是否包含点
- d) 判断圆与矩形关系
- e) 判断点是否在多边形内
- f) 判断点到线段的最近点
- g) 计算两个圆的公切线
- h) 求矩形的并的面积
- i) 求多边形面积
- j) 求多边形重心
- k) 求凸包
- 数据结构
- a) 单调队列
- b) 堆
- c) 并查集
- d) 树状数组
- e) 哈希表
- f) 线段树
- g) 字典树
- 图论
- a) 强连通分量
- b) 双连通分量(求割点,桥)
- c) 强连通分量与双连通分量缩点
- d) LCA、LCA与RMQ的转化
- e) 二分图匹配
- i. 二分图最大匹配
- ii. 最小点集覆盖
- iii. 最小路径覆盖
- iv. 二分图最优匹配
- v. 二分图多重匹配
- f) 网络流
- i. 最大流的基本SAP
- ii. 最大流的ISAP或者Dinic等高效算法(任一)
- iii. 最小费用最大流
- iv. 最大流最小割定理
- 动态规划多做题提高(10道难题以上)
- 数论
- a) 积性函数的应用
- b) 欧拉定理
- c) 费马小定理
- d) 威乐逊定理
- 组合数学
- a) 群论基础
- b) Polya定理与计数问题
- c) Catalan数
- 计算几何
- a) 各种旋转卡壳相关算法
- b) 三维计算几何算法
- 学好计算机组成原理
- 图论二
- a) 网络流的各种构图训练(重要)
- b) 最小割与最小点权覆盖等的关系(详见《最小割模型在信息学竞赛中的应用》一文)
- c) 次小生成树
- d) 第k短路
- e) 最小比率生成树
- 线性规划
- 动态规划更高级进阶
- KMP算法
- AC自动机理论与实现
- 博弈论之Alpha-beta剪枝
- }
- 自学完离散数学
- 自学概率论的部分章节
- 自学操作系统部分章节
- 一些如蚁群算法,遗传算法,模拟退火算法等人工智能方面应用较广的随机性算法。
- 把编译原理上学的东西应用到编程中:如DFA,NFA,还有语法分析的各种方法等。
- TOP LIST--DS
- Splay
- Treap
- 平衡树
- AVL
- 替罪羊树
- 朝鲜树
- LCT
- 分块数据结构
- 树套树系列
- 函数式线段树
- 后缀兄弟
- 可持久化数据结构系列
- TOP--Algo
- KMP
- 马拉车
- LCA系列
- 局部敏感哈希
- ***【你要多写的basic
- 快速mi
- 线性筛法求质数、欧拉函数
- 线段树(1754_with_pool)
- 树状数组(区间(通过前缀和之差))
- Splay
- KMP
- 马拉车
- Trie
- AC自动机(指针QAQ)
- .
转载于:https://www.cnblogs.com/SCaffrey/p/4340683.html