第一次考PAT甲级(95分),分享一下自己的心得体会

2019 年 9 月 8 日下午 13:30 - 15:30,我在西安交通大学考了 PAT 甲级,拿了 95 分。考完的时候心情还是比较激动的,毕竟自己从上个学期开始来来回回大致花了三个月,基本上把 PAT 甲级题刷完了,最后拿到了满足自己预期的成绩,算是对自己的鼓励吧。

当时入场前跟旁边的同学的交流,得知他们基本都是大四的,还有研究生,很少有我这样大三的。而和我同级的同学基本上都不知道有这个考试...

以下是我整理的心得:

  • 强烈建议把 20 分题放到最后做
    25 分题和 30 分题大多是以往出现过的题稍作改编,一看就会有思路的那种,至少有两题会涉及树、图等数据结构或者经典算法,那种题平时练习的时候都要做吐了。而 20 分题则不然,很多 20 分题涉及一些数学技巧,可能以往题目都没有出现过的那种,有时候没想到一些 trick,或者有一些坑没能排除,那这道题就休想 AC,如果开考做了将近一个小时都没把 20 分题做满,那会面临巨大的心理压力。我考试的时候就是把 20 分题放到最后 70 分钟做的,然后最后还是有一个 5 分测试点没过...羡慕那些一下子就做出来的大佬。

  • 熟悉 STL 的用法
    虽然我这次考试没有遇到不用 map、set、vector 等容器很难做的题目,但是如果能够熟练掌握这些,代码和思路都可以简化不少

  • 模板题平时一定要做的滚瓜烂熟
    我考试的第二道题就是链表操作题,给两个链表,给出所有结点的 address, value 以及 next,把两个链表交错放到第三个链表输出。这种题少说做过四五次了,很快就 AC 了。第三题是给出一个 syntax tree, 写出对应的表达式,这种题目也做过类似的,中序遍历再稍微做一些格式上的调整就出来了。

  • 经典数据结构和经典算法要会
    包括但不限于:

    • 树:二叉树的四大遍历、根据中序+先/后序建树、二叉树的静态和动态写法、堆、AVL 树的旋转、并查集
    • 图:DFS、BFS、Dijkstra、Dijkstra+DFS(求多条最短路径)
    • 经典算法:各种排序、二分查找

以上所有内容都要懂得原理和细节,并且能够在不参考别人或者书上的代码的基础上独立做题

  • 一定要耐心读英文题目,不要心急
    我当时的最后一道题是和 Dijkstra 相关的,但又不是以往的那种找最短路径的题目。题目给出了一张图和一些序列,要求判断每个序列是否为 Dijkstra 算法运行过程中进入已找到最短路径结点集合的序列 。说的通俗一点,Dijkstra 算法中每一次循环都会把一个结点的 visit 置为 true ,这道题就是让我们判断某个把所有结点置为 true 的序列是否正确。而我刚开始草草读题,理解成了那是不是一条最短路径,然后写完程序,发现样例都是完全错误的,浪费了好多时间,后来重新认真读了一遍题才发现。具体解题思路如下:在每一轮外层循环找到一个 u 的时候,判断一下 dist[序列里的对应结点] 和 dist[u] 是否相等就好了,如果不相等直接输出 "No",如果相等,把 visit[序列里的对应结点] 置为 true 继续下去。这也从侧面说明了,我们对算法也不能只是会背一个模板,会套题就够了。如果我只是把 Dijkstra 算法的代码背下来,这道题是做不出来的

  • 如果可以,提前去熟悉一下考点的键盘
    我考试的时候写代码异常难受,因为键位排布和我的笔记本差异太大,经常敲错字,浪费了不少时间。

最后吐槽一下,报名费太贵了...直接磨灭了我二刷的欲望。首次参加考试不要忘记领牛客网的 50 元券。

希望大家都能考出一个好成绩!

你可能感兴趣的:(第一次考PAT甲级(95分),分享一下自己的心得体会)