如何刷pat(想要在pat甲级拿80到90分)

来源:互联网 发布:低周波按摩仪 知乎 编辑:程序博客网 时间:2024/06/13 11:44

从去年9月份开始刷pat,第一次刷pat乙级,20分,心拔凉拔凉,但是自己考的分,再低也得咽下去!转眼快一年了,刷pat给我最大的感受就是又爱又恨,我常常疾呼:“我待代码如初恋,代码虐我千百遍!”今天百度一圈,找了些技术大佬的指点,咬着牙,告诉自己,革命尚未成功,自己仍需努力。也愿与同在pat坑里苦苦徘徊的各位小伙伴们一起打个气。

想要在pat甲级拿80到90分?陈越姥姥给出的建议如下:
首先有十分钟拿下乙级15分题的本事。
然后要能在半小时内完成乙级20分题1道。
接下来训练自己45分钟完成乙级25分题。
这时你有了2.5小时满乙级的本事!
下面改做甲级英文题。
要有用十分钟读完4题的本事。
20分钟写完20分题并至少过样例。
1小时内写完2道25分题并至少过样例。
1小时写完最难题并至少过样例。
此时你应该有70分左右了,
最后半小时拚命过90吧!
最后补充一句:其实乙级60分就有很多企业要了,乙级90分都有接到BAT级企业电话的!所以不是非要甲级才有机会哈~

遇到不会的题或者交N次都过不了某个测试点,先自己尝试着解决,很长时间没有想法(比如一个小时)后,再去网上搜题解。并且不要直接看代码,看下人家的思路。自己再来做,再做不来就去看代码,也不要直接把代码copy下来改了就交,最好看懂代码自己写。我个人觉得这样才能把别人的东西变成自己的。(MOOC数据结构的题有问题的话,善用讨论区,姥姥都会很耐心地提供帮助

另外找个大腿抱还是挺重要的(比你强就行),N天AC不了一个题有时候也挺打击人的,问题也许超出了你的知识范围而你并不知道,这个时候就需要一个大腿来节约时间,避免信心受损严重了。


代码可以背,思维是突击不来的。强烈建议每天都敲一些代码。
举个例子,甲级练习题里的基础数据结构题。
题目有1004,1020,1021,1028,1032,1107等。
涉及到的有队列,栈,链表,二叉树,并查集。
如果你发现自己并不熟悉这些,那么应该花几天的时间学习c++STL相关操作,二叉树前中后遍历。
由于PAT考试不能够携带纸质资料,我假设你会针对结构体使用algorithm头文件的排序,对STL的向量,栈,队列,map,set相关操作和迭代器足够熟悉,否则强烈建议你花上一些时间学习。
然后可以试着做一些模拟题目。
模拟题范围较广,可以锻炼思维,增强码代码能力。
题目有但不限于这些:1005,1006,1008,1009,1011,1015,1024,1035,1042,1043,1048,1065。
你需要学会贪心思想,深度优先搜索和广度优先搜索,进制转换,筛素数,字符串处理,二分查找。
之后的题目涉及到一些算法,更高级一点的数据结构,数学,动态规划知识。
动态规划较为晦涩,初学者需要较多时间才能掌握。
例如1007,最大子串和就是经典的一题。
另外建议你学习LIS最长上升子序列的O(n^2)做法,LCS最长公共子序列,01背包,这些建议去hduoj,讨论版有详细解析。
数据结构方面学习优美的树状数组,AVL。
例如1057需要用到树状数组的快速求和进行二分查找,1066使用AVL进行模拟。
AVL的旋转思想对Splay这样飘逸数据结构的学习是必不可少的。
算法方面在题库里主要涉及到图论算法。
如1003,1046,1106,主要是最短路算法和深度优先搜索的应用。
1053有多叉树的储存和遍历。
图的储存学会使用矩阵和vector两种方式。
最短路算法较多,不建议全都学会,但一定要对其中一种足够熟悉,并且对矩阵图和vector图都会写。
数学方面主要是学会筛素数,求gcd,lcm,O(sqrt(n))的找约数,素因子,会用约数和定理,约数个数定理,c++的话还有大数的模拟。