要看的书:
<算法导论>
<算法艺术与信息学竞赛>
<图论的算法与程序设计>
<国际大学生程序设计竞赛例题解>
<基本算法>
<骗分导论>
<国际大学生程序设计竞赛例题解(一)>-<数论、计算几何、搜索算法专集>
<国际大学生程序设计竞赛例题解(三)>-<图论、动态规划算法、综合题专集>
学习规划:
一、第一阶段(11月13日 – 12月4日)主要完成的算法:
1、基本数据结构:
线性表、链表(尤其双向链表和循环链表)、栈、二叉树
2、加减乘除四则运算的高精度算法
3、了解算法思想:DP、贪心、二分
4、查找与排序:
二分查找、二叉排序数、qsort函数、归并排序、HASH
5、图论基础算法:
DFS、BFS、MST(Prim)、Dijkstra、Floyd 、拓扑排序、割点
6、数学知识:初等数论(整除、同余)
二、第二阶段(12月25日 – 2月1日)主要完成的算法:
1、高级数据结构:
堆、并查集及路径压缩(Kruskal)、线段树
2、图论高级算法:
二分图匹配(匈牙利算法)、网络流、最小费用流、最大团、最大独立集、中国邮路问题、找Hamilton圈、寻找欧拉回路、着色问题、连通性判定、传递闭包和差分约束系统
3、博弈算法:博弈树、寻找必败类算法
4、计算几何:
判断线段相交、判断点是否在多边形内、凸包、矩形的交与并、两直线相交问题、已知三点求圆心
5、高级数学知识:(组合数学、具体数学中为主)
Fibonacci、Catalan数的应用、差分序列和Stirling数、Burnside定理和置换群、容斥原理、概率问题、生成排列数
6、高级搜索技巧:
双向BFS、A*算法(启发式搜索)、最小消耗优先、变深度优先搜索
三、三个算法思想的具体训练内容:
1)、DP 重中之重 (准备拿出3天做DP一种类型)
要解决的经典例题:
1、 最长不下降子序列(Longest Increasing Subsequence)
2、 最长公共子序列 (Longest Common Subsequence)
3、 矩阵链乘法 (Matrix Multiplication)
4、0-1背包
5、凸多边形的最优三角划分
6、多边形游戏 ---- 三角大战
2)、Greedy 贪心算法 高效优选算法
要解决的经典问题:
1、0-1背包
2、MST(Prim、Kruskal)
3、Dijkstra
4、Huffman Tree Code(霍夫曼编码)
3)、二分法
要解决的经典问题:
1、 归并排序算法求逆序数 (Inversion Number)
2、 最近点对
3、 几种常见算法的二分查找优化:LIS (最长不下降子序列)