ACM的算法分类

来源:互联网 发布:数据库log文件太大 编辑:程序博客网 时间:2024/06/05 18:22
初期:
一.基本算法:

(1)枚举.

(2)贪心.

(3)递归和分治法. 

(4)递推. 

(5)构造法.

(6)模拟法.


二.图算法:

(1)图的深度优先遍历和广度优先遍历. 

(2)最短路径算法(dijkstra,bellman-ford,floyd,heap+dijkstra).

(3)最小生成树算法(prim,kruskal).

(4)拓扑排序.

(5)二分图的最大匹配 (匈牙利算法).

(6)最大流的增广路算法(KM算法).


三.数据结构.

(1)串.

(2)排序(快排、归并排(与逆序数有关)、堆排.

(3)简单并查集的应用. 

(4)哈希表和二分查找等高效查找法(数的Hash,串的Hash).

(5)哈夫曼树.

(6)堆.

(7)trie树(静态建树、动态建树).


四.简单搜索 

(1)深度优先搜索.

(2)广度优先搜索.

(3)简单搜索技巧和剪枝.


五.动态规划

(1)背包问题.

(2)型如下表的简单DP: 

1.E[j]=opt{D[i]+w(i,j)} 

2.E[i,j]=opt{D[i-1,j]+xi,D[i,j-1]+yj,D[i-1][j-1]+zij} (最长公共子序列)

3.C[i,j]=w[i,j]+opt{C[i,k-1]+C[k,j]}.(最优二分检索树问题)


六.数学

(1)组合数学: 

     1.加法原理和乘法原理. 

     2.排列组合.

     3.递推关系.

(2)数论.

     1.素数与整除问题

     2.进制位. 

     3.同余模运算.

(3)计算方法.

     1.二分法求解单调函数相关知识.


七.计算几何学.

(1)几何公式.

(2)叉积和点积的运用(如线段相交的判定,点到线段的距离等).

(3)多边型的简单算法(求面积)和相关判定(点在多边型内,多边型是否相交)

(4)凸包.



中级:

一.基本算法:

(1)C++的标准模版库的应用.

(2)较为复杂的模拟题的训练.


二.图算法:

(1)差分约束系统的建立和求解.

(2)最小费用最大流.

(3)双连通分量.

(4)强连通分支及其缩点.

(5)图的割边和割点.

(6)最小割模型、网络流规约.


三.数据结构.

(1)线段树.

(2)静态二叉检索树.

(3)树状树组.

(4)RMQ.

(5)并查集的高级应用. 

(6)KMP算法.


四.搜索

(1)最优化剪枝和可行性剪枝.

(2)搜索的技巧和优化.

(3)记忆化搜索.

五.动态规划

(1)较为复杂的动态规划(如动态规划解特别的施行商问题等) 

(2)记录状态的动态规划.

(3)树型动态规划.


六.数学

(1)组合数学:

   1.容斥原理. 
   2.抽屉原理.
   3.置换群与Polya定理.
   4.递推关系和母函数.

(2)数学.

   1.高斯消元法.

   2.概率问题.

   3.GCD、扩展的欧几里德(中国剩余定理).

(3)计算方法.

   1.0/1分数规划.

   2.三分法求解单峰(单谷)的极值. 

   3.矩阵法

   4.迭代逼近

(4)随机化算法

(5)杂题.


七.计算几何学.

(1)坐标离散化.

(2)扫描线算法(例如求矩形的面积和周长并,常和线段树或堆一起使用). 

(3)多边形的内核(半平面交).

(4)几何工具的综合应用.



高级:


一.基本算法要求:

(1)代码快速写成,精简但不失风格 

(2)保证正确性和高效性. 


二.图算法:

(1)度限制最小生成树和第K最短路. 

(2)最短路,最小生成树,二分图,最大流问题的相关理论(主要是模型建立和求解).

(3)最优比率生成树.

(4)最小树形图.

(5)次小生成树.

(6)无向图、有向图的最小环 

三.数据结构.

(1)trie图的建立和应用. 

(2)LCA和RMQ问题(LCA(最近公共祖先问题) 有离线算法(并查集+dfs) 和 在线算法

(3)双端队列和它的应用(维护一个单调的队列,常常在动态规划中起到优化状态转移的目的). 

(4)左偏树(可合并堆).

(5)后缀树(非常有用的数据结构,也是赛区考题的热点). 

四.搜索

(1)较麻烦的搜索题目训练.

(2)广搜的状态优化:利用M进制数存储状态、转化为串用hash表判重、按位压缩存储状态、双向广搜、A*算法.

(3)深搜的优化:尽量用位运算、一定要加剪枝、函数参数尽可能少、层数不易过大、可以考虑双向搜索或者是轮换搜索、IDA*算法. 

五.动态规划

(1)需要用数据结构优化的动态规划. 

(2)四边形不等式理论.

(3)较难的状态D.

六.数学

(1)组合数学.

1.MoBius反演. 

2.偏序关系理论.

(2)博奕论. 

1.极大极小过程.

2.Nim问题.


七.计算几何学. 

(1)半平面求交.

(2)可视图的建立.

(3)点集最小圆覆盖. 

(4)对踵点


八.综合题.....
0 0