其他分享
首页 > 其他分享> > 2021年9月(甲级)秋季PAT考试

2021年9月(甲级)秋季PAT考试

作者:互联网

2021.9.12号,终于考完了。92分,已经超出了我自己的预期成绩了,很开心。(弱弱的说,我考试前做PAT前几年的仿真模拟卷都没有上70的,最高60多分,虽然说这次应该算是这几年以来最简单的一次了吧,所以说考试前其实我是没啥信心的QAQ,可能对于大佬来说92仅此而已,但是对我来说是莫大的惊喜了,开始没几分钟点进去,就有大佬已经AC了,瑟瑟发抖~~)
因为准备考研浙大才准备的PAT甲级考试,但是考试前刚刚听说软工免推的PAT成绩不能抵机试了,所以这次考试压力也没有多大。
我是非科班出身的,只是大一的时候有上过C语言,C++的相关课程,但都是水过去的。所以基本上到了大三还是不会打代码的小菜鸡一枚,为了准备考PAT也在图书馆借了算法笔记,收藏了柳婼大神的博客,看了很多的经验贴。我大概是七月中旬开始准备的,那时候拿这算法笔记啃,感觉刚开始还是很吃力的,一道排序题就可以难住我好几个小时,后来渐渐上手后,特别是学习了第六章的C++中的STL容器,感觉好用的飞起,明明可以很轻松的写代码,之前一直都在用土本法。但是这也算是一种经历吧,没有土办法一点点的写过,就不知道STL容器有多好用。到了八月份的时候,算法笔记才啃了不到一半,其实有点慌张了,大概是从八月中旬开始,就把每天大部分的时间往PAT上倾斜,emmm...大家不要学我,能尽早开始就不要偷懒,我就是懒惯了,才导致后面时间来不及。大概是到9月份初的时候,其实我才把算法笔记学习完,当然动态规划,后面字符串提升什么的没学,毕竟没时间了嘛,然后我就开始从后往前刷题库,四道题四道题刷,看柳婼大神的代码,但是由于柳婼大神的代码是只有分析的,虽然讲的很简介明了,但是一般对于我们这种代码打的少的人来说,其实不太容易想得到,所以我是把b站的讲PAT甲级的up主弄夫的视频和柳婼大神的代码结合着学习的,从中其实也学习到了非常多STL容器的具体用法,其实算法笔记中虽然是讲的较为详细了,但是你用的太少还是不会用的,我觉得看别人的代码看多了,自己自然而然的就用上了这些好用的方法,而不是纠结着一定要用自己写出来的,我觉得就9月初一直到考试前,我自己结合大神的代码视频刷题学习的过程是我提升最快的时候,算法笔记只是给了你一个门槛,让你懂得了该如何应对PAT上不同的题目,学习了各种算法(我真的是小白,之前从来没用过这些算法)真的如大佬所言,就算是对于小白也是很友好的。不过想要有所提升,算法笔记明显不够用,在学习完算法笔记的基础上,刷题总结学习大佬的代码,思维方式才是备考的重中之重。
讲一下这次考试的心路历程,感觉看题是杠杆的总要的。刚开始做题的时候,我把所有的题目都看了一遍,大概看了一下要考啥,因为是英语(我的英语真一般,稍微来一点不常见的单词就会不认识)所以读题较慢。大概4道题读了10分钟,而且是粗粗的读,根本没有读懂,就大概感觉第一题读不懂,第二题好像考栈,第三题考图论,第四题考堆?树(刚开始是这样想的),然后读完题我就去看了一下提交通过率,好家伙,第一题的通过率低的离谱,反而是第四题最高,然后我就转向第四题的怀抱了,但是读了半天,也读不懂题目,又是堆啊,又是中序遍历啥的,然后我就想,难道和之前的一样是考建堆吗,只不过这个是小顶堆,然后我就按照堆的思路做下去(考前打过好几遍相关代码了,所以还是挺熟的),然后写到向上调整的时候发现,好像我看到那张样例图给的不是完全二叉树啊,这咋整,然后给我整愣住了,我又看了一下题目,发现没啥思路。
这时候大概还有2个半小时,然后我就又去看了一下通过率,咋第二题的通过率这么高呢?我之前粗粗的看了一下第二题,其实也没读懂题目,然后我就去在仔细读了一遍题目,发现的真的挺简单的,只要稍微排序一下,然后用STL中的stack容器每次压出一个帽子的size(我用的是unordered-map的两个映射)就在映射中找到体重对应的位置下标输出即可。很快20分钟不到读题和做题就结束了,这时候还有2个小时十几分钟,然后我就想好歹20分了,没有被0封,心情不错,就又去看通过率(呵呵,没错我就是看通过率做题的,其实效果还不错),发现还是第四题较高,又跑去攻克第四题。这次仔细看了一下他给我的例子,那个pair,和图,发现根据小的数字就是小顶堆的特性,但是看他给出的好像key的顺序好像是从小到大的,又看图,发现很像题库中做的一道建立笛卡尔树的题目(就是每次从中序中选择最小的数作为根节点,依据这个来建树,这道题我考试前因为在背代码段,所以也打过好几遍了),所以发现这根本不是建图,他只是有一点堆的特性,所以只需要把这个key和p(开头的那个单词我忘记是啥了)作为一个结构体一起排序,当然是按照key的值的从小到大排序了,然后把他们看成一个整体,每次在结构体数组中找到p(开头的那个单词我忘记是啥了)最小的值,然后然这个值作为根结点,递归建树,最后层序遍历一下就okk啦~,写法之后一步AC,很开心。
这时候大概还有1个小时30多分钟,我就想,就剩两题了,还能给我难住不成,然后我就开始做第三题,毕竟第一题通过率很低,而且我之前看了题目,确实不太读的懂(提示没看),看了之后,也是很快有了思路,大概意思就是给你一张图,让你选择从哪个顶点出发可以遍历到最多的顶点(访问过的顶点不能再访问),虽然我后来看到有人的群里说每次要选择编号最小的点走,但是很奇怪的是,我由于没有看到这句话,所以就是用了个dfs,进行深度遍历,记录遍历的深度(即过一个顶点要让深度+1,当然要回溯的,回来之后还要-1)直到没有顶点可以走的时候就退出循环,哎,也是我太蠢了,没有真正搞懂递归,虽然想法很简单,但是现实很骨感啊,我发现无论我怎么做,我都导不出最后到达递归边界的时候我想要的深度值,然后我就想debug吧,看一下出了什么问题,然后遇到了最让我奔溃的事情,那个考点的Dev-C++是没有办法debug的,啊真想当场哭出来,由于我的电脑上之前也试过VS,但是不知道咋的就是用不了VS来运行C,所以我用的都是Dev-C,让我当场去研究VS也不现实,那我只能cout打印看情况了呀,但是有错的地方又在递归函数内部,搞的我头晕,我后来就发现了,好像是因为函数内部的参数是个复制的参数,改变不了主函数的参数值的,然后我就想,有啥大不了的,用引用类型呗,然后发现不得行,报错(也可能是我写的有问题),然后我就想,这样也不行那就全局变量,然后发现,全局变量也不得行,因为我写的dfs是有回溯的,每次回溯回来就回到原值了,根本带回不了最深层的深度的值,经过一次次的尝试和失败,我突然想起了之前在算法笔记上,用Dijkstra+DFS求最优解的时候,算法笔记上教我们的是在最深层的时候(就是到达递归边界的时候)把想要的最大值赋值给全局变量,就可以带回这个值了,然后我就这样做了一下,果然AC了。(但是由于我是没有看到其他大佬说的那句每次选择往最小的点走的,所以我也还不太清楚为什么对),这时候由于在第三题耗费了太多时间了,没有debug呜呜呜,可恶。
第一题只剩下30分钟了,我再次强调读题真的很重要,读好题目事半功倍,我读题大概读了15分钟,才搞懂什么意思,(也是刚看时看题目的时候没有看到下面的提示,耗费了几分钟的时间),然后就剩10多分钟了,我就着急的,代码打的很快,不到五分钟就大概打好了,当然中间有些错误,因为没有想太多就打了,根本没时间,所以没有想到什么方法就用了什么。中间改错cout查看了一下,然后最后一分钟改出来12分。这里说一下,由于我之前太急了,其实感觉这道题能过的希望也不大,所以我设数组设置了一个100大小的数组,所以虽然最后过了,但是从第三个点开始就段错误了,段错误的很明显,谁叫我之前着急,设置了100大小的数组呢,哎,当然说这些为时已晚了。
这仅仅是我的一次考试体验,以此记录。当然觉得自己挺幸运的,碰上的这次考试这么简单,不像前几次的卷子,我看到题目没有丝毫的想法。顺便膜拜一下大佬们,TQL。

标签:题目,笔记,然后,算法,甲级,2021,PAT,考试
来源: https://www.cnblogs.com/shiff/p/15257362.html