这篇文章主要写给不知道如何开始准备PAT的朋友们~算是我自己的一点小小的感想吧!
大概是在2019年底或者2020年初报名了2020年的春季PAT,本来是在3月份进行考试,结果因为今年的特殊情况一直推迟到了2020年7月25日,最终考试成绩为91分,虽然没有达到满分,但是也积累了一些经验和教训。所以想在这里进行一些分享。
我是浙大数字媒体技术专业倒数第二届的学生,算是和计算机沾边,因为之前修过数据结构(但都是去年的事了),所以有一定的数据结构和算法知识的基础,水平大概在记得有这么个关键词,比如你告诉我快排/堆/树/图,我会知道我学过这么个东西,但具体再问可能就说不太清了。 说这么多的意思大概就是:我是个非常非常普通的人,脑子没有特别好但也不算差,基础说有也有,但是时隔久远也快忘得差不多了。 如果你和我情况一样不知道怎么开始的话就看下去吧~
总的来说一共刷题的天数大概在40-50天左右,每天大概五个小时左右~
开始考试后,激动的心,颤抖的手,我颤巍巍地点开了第一道题。大概知识点是处理字符串将其变成数字然后判断素数的一个问题,我快马加鞭,劈里啪啦打出来了第一题的答案,用时7分钟。做完第一题我心想:我也太牛了!!!!!!!!!!!(考试就是要这样激励自己哈,因为我感觉做完第一题之后我的紧张情绪大降)
第二题是一道应用了各种存储方式的题,但是迄今我也想不出来考到了什么明显的知识点。。大概题意是每个人依次给出一个数,这个数必须是前面人给出来的所有数字中的两个数字之差(大概是这样,我也忘得差不多了…),它难就难在数据的存储和调用有一点费劲,最后吭哧吭哧花了半个多小时搞出来超时了2个测试点,愣了5秒决定先做下一题。
遂转战第三题,第三题好像是一道并不典型的图(救命,我真的想不太起来了),但是不难,大概二十多分钟AC掉了。
战第四题,第四题是一个NP Complete问题的模拟,学过ADS的同学可能知道,关于external sorting,做了半天出来就过了一个点?
这时的我知道了什么叫做:模板题会少一点(这根本就是没有好吗55555555555……)最重要的是此时我所有的点错误原因均是四个绿绿的大字:运行超时。此时距离考试结束还有1.5个小时,当时得分大概83分左右,我寻思这不行啊,白刷这么多道题了?
于是我做了最正确的一个决定:回去磕第二题。第二题的运行超时总结起来应该是我每次判断数字是否是之前数字的差的时候都会扫描一遍之前存储数据的vector,每次都扫描一遍就变成了O(n²),当数据量巨大的时候会导致非常慢,运行超时。于是我建立了一个bool数组,用来存储这个差是否可能会存在,每次输入一个值的时候就把所有可能的差值都设为true,之后直接判断即可,这时再提交答案就变成了全部正确,此时我获得了88分。
然后我回去死磕第四题,最后不知道为什么(是真的不知道为什么)有一个点不超时了……这个时候成绩成了91分,后面就再也de不出来bug了……了……
总体来说,这次虽然没有得到满分,但是自我感觉91分也还算对得起这几个月吧!(毕竟我只是一个菜菜的人)接下来说一下经验教训啦~
前面也提到,第一遍顺完四道题之后所有的错误点都是运行超时,而我对这样的错误简直束手无策,因为之前刷题的时候很少遇到这样的情况,基本都是答案错误,这也就提醒了我之前刷题的时候基本没有注意过算法复杂度的分析和优化,基本上都是做出来答案正确就接着下一道了,没有怎么思考过怎么优化它才能让代码变得更简洁、时空复杂度最低。这个方面以后可以改善!多多向大佬们学习!
在心态方面,不用太紧张啦!只要好好准备都是可以的!一直刷不过去的时候也不要怀疑人生!看懂吸收别人的思路和风格,内化为自己的东西,慢慢积攒,都是可以的!
以上均为自己个人观点,请谨慎参考~ 预祝大家都考到满意的PAT成绩~~