ACM算法分类


            ACM算法分类:  

 
 初期:



 一.基本算法: 
      (1)枚举
      (2)贪心
      (3)递归和分治法. 
      (4)递推. 
      (5)构造法
      (6)模拟法


 二.图算法: 
      (1)图的深度优先遍历和广度优先遍历. 
      (2)最短路径算法
      (3)最小生成树算法
      (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)随机化算法
     
 七.计算几何学. 
         (1)坐标离散化. 
         (2)扫描线算法(例如求矩形的面积和周长并,常和线段树或堆一起使用). 
         (3)多边形的内核(半平面交)
         (4)几何工具的综合应用
 高级:
 一.基本算法要求:  
       (1)代码快速写成,精简但不失风格  
       (2)保证正确性和高效性. 
 二.图算法: 
       (1)度限制最小生成树和第K最短路.
       (2)最短路,最小生成树,二分图,最大流问题的相关理论(主要是模型建立和求解)
       
       (3)最优比率生成树.
       (4)最小树形图
       (5)次小生成树. 
       (6)无向图、有向图的最小环   
 三.数据结构.  
       (1)trie图的建立和应用.
       (2)LCA和RMQ问题(LCA(最近公共祖先问题) 有离线算法(并查集+dfs) 和 在线算法 
           (RMQ+dfs))
       (3)双端队列和它的应用(维护一个单调的队列,常常在动态规划中起到优化状态转移的
           目的). 
       (4)左偏树(可合并堆).  
       (5)后缀树(非常有用的数据结构,也是赛区考题的热点). 
       
 四.搜索  
       (1)较麻烦的搜索题目训练
       (2)广搜的状态优化:利用M进制数存储状态、转化为串用hash表判重、按位压缩存储状态、双向广搜、A*算法.
       (3)深搜的优化:尽量用位运算、一定要加剪枝、函数参数尽可能少、层数不易过大、可以考虑双向搜索或者是轮换搜索、IDA*算法.
 五.动态规划  
       (1)需要用数据结构优化的动态规划.
       (2)四边形不等式理论. 
       (3)较难的状态DP
 六.数学  
       (1)组合数学. 
         1.MoBius反演
         2.偏序关系理论. 
       (2)博奕论. 
         1.极大极小过程
         2.Nim问题. 
 七.计算几何学.  
       (1)半平面求交
       (2)可视图的建立
       (3)点集最小圆覆盖. 
       (4)对踵点
 
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值