dream.in.java

能以不变应万变是聪明人做事的准则。万事从小事做起,积累小成功,问鼎大成功,是成功者的秘诀。

ACM竞赛需要掌握的知识

ACM竞赛需要掌握的知识
SeasideBoy @ 2008-10-28 07:47

图论
       路径问题
              最短路径
                     0/1边权最短路径
BFS
 
                     非负边权最短路径
Dijkstra
***      可以用Dijkstra解决的问题的特征
 
                     负边权最短路径
Bellman-Ford
***      Bellman-Ford的Yen-氏优化
***      差分约束系统
 
                            Floyd
***      广义路径问题
***      传递闭包
***      极小极大距离 / 极大极小距离

 
Euler Path / Tour
       圈套圈算法
       混合图的 Euler Path / Tour
 
Hamilton Path / Tour
       特殊图的Hamilton Path / Tour 构造
 
生成树问题
              最小生成树
                     第k小生成树
 
              最优比率生成树
***      0/1分数规划
 
              度限制生成树
 
       连通性问题
***      强大的DFS算法
 
              无向图连通性
                     割点
割边
二连通分支
 
              有向图连通性
                     强连通分支
***      2-SAT
***      最小点基
 
有向无环图
       拓扑排序
***      有向无环图与动态规划的关系
 
二分图匹配问题
***      一般图问题与二分图问题的转换思路
 
最大匹配
***      有向图的最小路径覆盖
***      0 / 1矩阵的最小覆盖

 
       完备匹配
 
       最优匹配
 
网络流问题
***      网络流模型的简单特征和与线性规划的关系
 
       最大流最小割定理
 
       最大流问题
有上下界的最大流问题
***      循环流
 
最小费用最大流 / 最大费用最大流
 
弦图的性质和判定
 
组合数学

***      解决组合数学问题时常用的思想
***      逼近
***      递推 / 动态规划

 
       概率问题
 
       Polya定理
      
 
计算几何 / 解析几何
***      计算几何的核心:叉积 / 面积
***      解析几何的主力:复数

 
基本形
       点
       直线,线段
       多边形
凸多边形 / 凸包
***      凸包算法的引进,卷包裹法
       Graham扫描法
***      水平序的引进,共线凸包的补丁
完美凸包算法
 
       相关判定
              两直线相交
              两线段相交
              点在任意多边形内的判定
              点在凸多边形内的判定
      
       经典问题
              最小外接圆
                     近似O(n)的最小外接圆算法
 
              点集直径
                     旋转卡壳,对踵点
      
       多边形的三角剖分
 
数学 / 数论
       最大公约数
              Euclid算法
                     扩展的Euclid算法
                            同余方程 / 二元一次不定方程
                            同余方程组
 
       线性方程组
              高斯消元法
***      解mod 2域上的线性方程组
***      整系数方程组的精确解法

 
矩阵
       行列式的计算
***      利用矩阵乘法快速计算递推关系
 
       分数
              分数树
              连分数逼近
 
       数论计算
              求N的约数个数
              求phi(N)
              求约数和
              ……
      
       素数问题
              概率判素算法
              概率因子分解
 
数据结构:
       组织结构
              二叉堆
                     左偏树
              胜者树
              Treap
 
统计结构
树状数组
虚二叉树
线段树
***      矩形面积并
***      圆形面积并
 
       关系结构
              Hash表
并查集
***      路径压缩思想的应用
 
       STL中的数据结构
              vector
              deque
set / map
             
动态规划 / 记忆化搜索
***      动态规划和记忆化搜索在思考方式上的区别
 
       最长子序列系列问题
              最长不下降子序列
 
       最长公共子序列
 
       一类NP问题的动态规划解法
 
       树型动态规划
 
       背包问题
 
       动态规划的优化
***      四边形不等式
***      状态设计
***      规划方向(?)

      
常用思想
       二分
 
       最小表示法


ACM需要掌握的知识
对ACM竞赛的算法大概分了一下类,分成了数学、数据结构和算法三大块。

一 数学(Mathematics)

1 离散数学(Discrete Mathematics)

1.1 图论(Graph Theory)

图的遍历(Graph Traversal): DFS, BFS

最小生成树(Minimum Spanning Tree): Prim, Kruskal

最短路径(Shortest Path): Dijkstra, Floyd

传递闭包(Transitive Closure)

关节点(Articulation Point - UndiGraph)

拓扑排序(Topological Sort - AOV-Network)

关键路径(Critical Path - AOE-Network)

回路问题: 欧拉路(Euler Path), 汉密尔顿回路(Hamilton Tour)

差分约束(Difference Constraints): Bellman-Ford

二部图匹配(Bipartite Matching)

网络流(Network Flow)

...

1.2 组合数学(Combinatorics)

2 数论(Number Theory)

2.1 素数: GCD, LCM...

2.2 同余

3 计算几何(Computational Geometry)

线段相交, 多边形面积, 内点外点的判断, 凸包(Convex Hull), 重心(Bary Center)...

4 线性代数

矩阵(Matrix), 线性方程组(Linear Equations)...

5 概率论

6 初等数学与解析几何

7 高等数学

点积(Dot Product), 差积(Cross Product), 积分(Integral), 微分(Differential)...

二 数据结构(Data Structure)

1 线性结构

线性表(Linear List)

栈(Stack), 队列(Queue)

数组(Array), 串(String), 广义表(General List)

2 非线性结构

树(Tree)

堆(Heap)

图(Graph)

3 排序

3.1 插入排序

直接插入排序(Insert Sort) O(n^2)

折半插入排序(Binary Insert Sort)

希尔排序(Shell Sort)

3.2 交换排序

冒泡排序(Bubble Sort) O(n^2)

快速排序(Quick Sort)?? O(nlogn)

3.3 选择排序

直接选择排序(Select Sort) O(n^2)

锦标赛排序(Tournament Sort) O(nlogn)

堆排序(Heap Sort) O(nlogn)

3.4 归并排序(Merge Sort) O(nlogn)

3.5 基数排序(Radix Sort) O(d(n+radix))

4 查找

4.1 二分(Binary Search)

4.2 树型

二叉搜索树(Binary Search Tree)

平衡搜索树(AVL Tree)

并查集(Union-Find Set)

4.3 哈希(Hashing)

三 算法(Algorithm)

1 模拟算法

2 搜索算法

2.1 枚举搜索(Enumeration)

2.2 深度优先(Depth First Search)

2.3 广度优先(Breadth First Search)

2.4 启发式搜索(Heuristic Search)

3 以“相似或相同子问题”为核心的算法

3.1 递推

3.2 递归(Recursion)

3.3 贪心法(Greedy)

3.4 动态规划(Dynamic Programming)

posted on 2009-02-23 20:23 YXY 阅读(632) 评论(0)  编辑  收藏


只有注册用户登录后才能发表评论。


网站导航: