1. 链
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
(可以无视,用STL)
2. 栈(无视,因为用递归)
3. 队列(在ACM应用非常广泛,特别是优先队列和单调队列)
4. 邻接矩阵(基本结构,不过太占空间)
5. 静态邻接表(可以实现邻接矩阵的所有功能,而且省空间,省空间)
6. 并查集(运用非常广泛,必须熟练运用)
7. Hash,即哈希表(查询效率为O(1)的数据结构,必须熟练运用)
8. Trie,即字典树(特殊的Hash,应用广泛,必须熟练运用)
9. AC自动机(等于Trie结构+KMP算法,必须熟练运用)
10. BIT,即树状数组(代码段,用处大,必须熟练运用)
11. 线段树(几乎每次比赛都必考,必须熟练运用)
12. 二分堆(可以用优先队列代替,理解即可)
13. 动态查找表(工程上运用非常广泛,建议理解,不需要熟练运用,因为难度比较大,内容较多)
14. 后缀数组,后缀树,伸展树,左偏树等(这些我只是听说过)
除了数据结构,程序剩下的部分我们统称为算法,可能只是一种思维方式,也可能是前人推导的理论等。
1. 编程思路上
(1)至下而上的思维方式是动态规划
(2)至上而下的思维方式是递归
2. 算法原理
(1)分治,减治,变治
(2)动态规划,贪心,迭代
3. 算法分析
(1)要有计算及优化时空复杂度的能力
(2)利用空间换取时间
4. 经典的算法
(1)算法都是基于图结构
(2)思维都是基于树结构
因为从编程的角度上,即使是一个循环的
设计
领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计
,我们也可以称作是算法,所以很难说算法包括哪些?下面只是给出了一些关键字:
(1)线性筛法(求素数表最快的算法,必须掌握)
(2)DP(编程能力的瓶颈之一)
(3)DFS(编程能力的瓶颈之二,几乎所有的递归,我们都能看成是DFS问题)
(4)BFS(只要是有训练过的人,都能掌握)
(5)KMP算法(代码短,理解难)
(6)Prim算法(理解,必须掌握)
(7)Kruskal算法(非常简单,必须掌握)
(8)Dijkstra算法(理解,必须掌握)
(9)shortest path fast algorithm(简称SPFA算法,必须掌握)
(10)Hungary算法(求二分图唯一算法,必须掌握)
(11)Kuhn-Munkras算法(简称KM算法,求二分图完全匹配,必须掌握)
(12)Ford-Fulkerson算法(等于DFS+迭代,理解即可)
(13)Edmonds-Karp算法(等于BFS+迭代,理解即可)
(14)Shortest Augmenting Paths(简称SAP算法,通吃网络流所有题目,必须掌握)
(15)minimum cost maximum flow(简称MCMF算法,必须掌握)
(16)Tarjan算法(非常重要,必须掌握)
(17)其他如RMQ,LCA,中国剩余定理,朱刘算法(我也只是听说过)