【PAT甲级笔记】别人经验总结和整理

时间有限,针对PAT考试,花了一点时间整理了一下学习内容:

【推荐资源】
1.柳神按题型整理的PAT甲级【链接】
2.个人觉得不错的网站’【链接】
3.甲级刷题资源,还是一个比较全的分类,知识点总结等【链接】
4.甲级刷题索引(整理的所有题解)【链接】

考试考纲:
理解并熟练编程实现经典高级算法,包括哈希映射、并查集、最短路径、拓扑排序、关键路径、贪心、深度优先搜索、广度优先搜索、回溯剪枝等;

常考的知识点:

哈希映射:一般会用map和unordered_map就好。此外,比如说题目固定了关键字为4个大写字母,那么可以把关键字看成26进制数,这样就能把字符串转换为int型数据处理,提高程序运行速度。当然基本概念也不能忘,解决哈希冲突的基础方法要理解,包括开放地址法(线性探测、平方探测)和链地址法(开放定址法)。

并查集:主要就是掌握findfather函数(找到某节点所在集合的“根”)。压缩路径的函数如下:

int findfather(int a){
if(a!=father[a]{
father[a]=findfather(father[a]);
}
return father[a];
}
最短路径:主要掌握dijkstra+DFS。如果出现了负边权,就用bellman-ford(尚未考过)。

拓扑排序、关键路径:可以做做PTA上的 Data Structures and Algorithms (English)题目集7-12和7-18,数据结构与算法题目集(中文)7-11。

贪心:考的很少。印象比较深的是甲级题库1033 To Fill or Not to Fill,挺难的。

DFS、BFS:算是必须掌握的基础了。

回溯剪枝:就记得甲级题库里的1103了,不过因为内存限制放的宽,用动态规划暴力做也可以。

此外,AVL树的插入删除要会写。

根据树的各种遍历方式构建二叉树经常考到,最好熟练掌握。

堆的构建、删除、插入要会写,即“自顶向下”和“自底向上”调整堆。

最后,关于最小生成树和动态规划,这两个都是顶级的内容了,基本不会考。

需要常复习的点 :

  • 构建二叉树遍历
  • djistra最短路径
  • dfs搜索图
  • findfather 并查集
  • AVL 等变形

不常考的知识点:

不考的题型参考如下:(摘自柳神)
【PAT甲级笔记】别人经验总结和整理_第1张图片
难度比较大,感觉不是复习重点的题(参考柳神)
【PAT甲级笔记】别人经验总结和整理_第2张图片

考试时题目分类:

PAT甲级一共有四道题,分数分布为
20分 25分 25分 30分
前两题主要为乙级的英文版。
PAT考试的题目类型有趋于稳定的倾向,所以有点类似大学里的考试,如果可以,历年的题目作为参考的重点,并且有个复习的倾向性。(历年考题会放在PAT题库的最后几道题里,因为从前往后更新~)
所以,推荐从后往前根据题型开始做

数据结构部分:

  1. 第一部分:甲级练习题里的基础数据结构题。
    题目有1004,1020,1021,1028,1032,1107等。
    涉及到的有队列,栈,链表,二叉树,并查集。
    如果你发现自己并不熟悉这些,那么应该花几天的时间学习c++STL相关操作,二叉树前中后遍历,针对结构体使用algorithm头文件的排序,对STL的向量,栈,队列,map,set相关操作和迭代器足够熟悉,否则强烈建议你花上一些时间学习。

  2. 第二部分:模拟题范围较广,可以锻炼思维,增强码代码能力。
    题目有但不限于这些:1005,1006,1008,1009,1011,1015,1024,1035,1042,1043,1048,1065。
    你需要学会贪心思想,深度优先搜索和广度优先搜索,进制转换,筛素数,字符串处理,二分查找。

  3. 第三部分:之后的题目涉及到一些算法,更高级一点的数据结构,数学,动态规划知识。
    动态规划较为晦涩,初学者需要较多时间才能掌握。例如1007,最大子串和就是经典的一题。另外建议你学习LIS最长上升子序列的O(n^2)做法,LCS最长公共子序列,01背包,这些建议去hduoj,讨论版有详细解析。
    树状数组,AVL:例如1057需要用到树状数组的快速求和进行二分查找,1066使用AVL进行模拟。AVL的旋转思想对Splay这样飘逸数据结构的学习是必不可少的。

算法部分

  1. 主要涉及到图论算法。
    如1003,1046,1106,主要是最短路算法和深度优先搜索的应用。
    1053有多叉树的储存和遍历。
    图的储存学会使用矩阵和vector两种方式。
    最短路算法较多,不建议全都学会,但一定要对其中一种足够熟悉,并且对矩阵图和vector图都会写。
  2. 数学方面主要是学会筛素数,求gcd,lcm,O(sqrt(n))的找约数,素因子,会用约数和定理,约数个数定理,c++的话还有大数的模拟。

值得重新刷的题目:
1053(树题)

你可能感兴趣的:(算法,PAT甲级笔记)