OJ上的一些水题(可用来练手和增加自信) (POJ 3299,POJ 2159,POJ 2739,POJ 1083,POJ 2262,POJ 1503,POJ 3006,POJ 2255,POJ 3094)
初期:
一.基本算法:
- 枚举. (POJ 1753,POJ 2965)
- 贪心(POJ 1328,POJ 2109,POJ 2586)
- 递归和分治法.
- 递推.
- 构造法.(POJ 3295)
- 模拟法.(POJ 1068,POJ 2632,POJ 1573,POJ 2993,POJ 2996)
二.图算法:
- 图的深度优先遍历和广度优先遍历.
- 最短路径算法(dijkstra,bellman-ford,floyd,heap+dijkstra) (POJ 1860,POJ 3259,POJ 1062,POJ 2253,POJ 1125,POJ 2240)
- 最小生成树算法(prim,kruskal) (POJ 1789,POJ 2485,POJ 1258,POJ 3026)
- 拓扑排序 (POJ 1094)
- 二分图的最大匹配 (匈牙利算法) (POJ 3041,POJ 3020)
- 最大流的增广路算法(KM算法). (POJ 1459,POJ 3436)
三.数据结构.
- 串 (POJ 1035,POJ 3080,POJ 1936)
- 排序(快排、归并排(与逆序数有关)、堆排) (POJ 2388,POJ 2299)
- 简单并查集的应用.
- 哈希表和二分查找等高效查找法(数的Hash,串的Hash) (POJ 3349,POJ 3274,POJ 2151,POJ 1840,POJ 2002,POJ 2503)
- 哈夫曼树(POJ 3253)
- 堆
- trie树(静态建树、动态建树) (POJ 2513)
四.简单搜索
- 深度优先搜索 (POJ 2488,POJ 3083,POJ 3009,POJ 1321,POJ 2251)
- 广度优先搜索(POJ 3278,POJ 1426,POJ 3126,POJ 3087.POJ 3414)
- 简单搜索技巧和剪枝(POJ 2531,POJ 1416,POJ 2676,POJ 1129)
五.动态规划
六.数学
-
组合数学:
-
数论.
-
计算方法.
七.计算几何学.
- 几何公式.
- 叉积和点积的运用(如线段相交的判定,点到线段的距离等). (POJ 2031,POJ 1039)
- 多边型的简单算法(求面积)和相关判定(点在多边型内,多边型是否相交) (POJ 1408,POJ 1584)
- 凸包. (POJ 2187,POJ 1113)
中级:
一.基本算法:
二.图算法:
- 差分约束系统的建立和求解. (POJ 1201,POJ 2983)
- 最小费用最大流(POJ 2516,POJ 2195)
- 双连通分量(POJ 2942)
- 强连通分支及其缩点.(POJ 2186)
- 图的割边和割点(POJ 3352)
- 最小割模型、网络流规约(POJ 3308)
三.数据结构.
- 线段树. (POJ 2528,POJ 2828,POJ 2777,POJ 2886,POJ 2750)
- 静态二叉检索树. (POJ 2482,POJ 2352)
- 树状树组(POJ 1195,POJ 3321)
- RMQ. (POJ 3264,POJ 3368)
- 并查集的高级应用. (POJ 1703,POJ 2492)
- KMP算法. (POJ 1961,POJ 2406)
四.搜索
五.动态规划
- 较为复杂的动态规划(如动态规划解特别的施行商问题等) (POJ 1191,POJ 1054,POJ 3280,POJ 2029,POJ 2948,POJ 1925,POJ 3034)
- 记录状态的动态规划. (POJ 3254,POJ 2411,POJ 1185)
- 树型动态规划(POJ 2057,POJ 1947,POJ 2486,POJ 3140)
六.数学
-
组合数学:
-
数学.
-
计算方法.
七.计算几何学.
- 坐标离散化.
- 扫描线算法(例如求矩形的面积和周长并,常和线段树或堆一起使用). (POJ 1765,POJ 1177,POJ 1151,POJ 3277,POJ 2280,POJ 3004)
- 多边形的内核(半平面交)(POJ 3130,POJ 3335)
- 几何工具的综合应用.(POJ 1819,POJ 1066,POJ 2043,POJ 3227,POJ 2165,POJ 3429)
高级:
一.基本算法要求:
二.图算法:
- 度限制最小生成树和第K最短路. (POJ 1639)
- 最短路,最小生成树,二分图,最大流问题的相关理论(主要是模型建立和求解) (POJ 3155, POJ 2112,POJ 1966,POJ 3281,POJ 1087,POJ 2289,POJ 3216,POJ 2446 )
- 最优比率生成树. (POJ 2728)
- 最小树形图(POJ 3164)
- 次小生成树.
- 无向图、有向图的最小环
三.数据结构.
- trie图的建立和应用. (POJ 2778)
- LCA和RMQ问题(LCA(最近公共祖先问题) 有离线算法(并查集+dfs) 和 在线算法
(RMQ+dfs)).(POJ 1330) - 双端队列和它的应用(维护一个单调的队列,常常在动态规划中起到优化状态转移
的目的). (POJ 2823) - 左偏树(可合并堆).
- 后缀树(非常有用的数据结构,也是赛区考题的热点). (POJ 3415,POJ 3294)
四.搜索
- 较麻烦的搜索题目训练(POJ 1069,POJ 3322,POJ 1475,POJ 1924,POJ 2049,POJ 3426)
- 广搜的状态优化:利用M进制数存储状态、转化为串用hash表判重、按位压缩存储
状态、双向广搜、A*算法. (POJ 1768,POJ 1184,POJ 1872,POJ 1324,POJ 2046,POJ 1482) - 深搜的优化:尽量用位运算、一定要加剪枝、函数参数尽可能少、层数不易过大
、可以考虑双向搜索或者是轮换搜索、IDA*算法. (POJ 3131,POJ 2870,POJ 2286)
五.动态规划
六.数学
七.计算几何学.
八.综合题.
(POJ 3109,POJ 1478,POJ 1462,POJ 2729,POJ 2048,POJ 3336,POJ 3315,POJ 2148,POJ 1263)