java高级竞赛知识_ACM竞赛需要掌握的知识

图论

路径问题

最短路径

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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值