转载请注明出处
个人博客:https://maxusun.github.io/
今天整理电脑,发现了去年为了考研浙大计算机整理的PAT资料。现在考研已经尘埃落定。想到当时盲目刷题浪费了好多时间,在这里希望将整理的东西放到网上,方便后来者学习。
PAT的命题趋势
将PAT甲级中的题目从第一题刷到最后一题,可以明显感受到,PAT甲级的题目风格发生了很明显的变化。从早期的模拟型题目变成了后来以数据结构和算法为主的固定题型。如果时间紧迫的话,可以只刷后一般的题目,放弃前一半的题目,因为前一半题目的出题风格已经过时了。
PAT题目按分数和知识点分级
PAT按照分数分为20,25,30分。下面是将题目按照这3个分数段进行整理。
其中25分和30分的题目代码在这里:代码
20分段
20分的部分题目没有标注涉及的知识点,没有标注的这些题目说明非常简单,只是用来熟悉编程语言的,稍微有些基础的同学可以跳过,没有基础的同学可以先做这些题目。
| 题号 | 知识点 | 是否建议二刷 |
|---|---|---|
| 1001 | ||
| 1005 | ||
| 1008 | ||
| 1011 | ||
| 1015 | ||
| 1019 | ||
| 1023 | ||
| 1027 | ||
| 1031 | ||
| 1035 | ||
| 1041 | ||
| 1042 | ||
| 1046 | ||
| 1050 | ||
| 1054 | ||
| 1058 | ||
| 1061 | ||
| 1065 | ||
| 1069 | ||
| 1073 | ||
| 1088 | 分数处理 | |
| 1092 | ||
| 1096 | ||
| 1100 | ||
| 1104 | ||
| 1108 | 字符串于浮点数间的转换 | 二刷 |
| 1112 | 字符串处理 | 可二刷 |
| 1116 | 还行,hash | |
| 1120 | ||
| 1124 | ||
| 1128 | n皇后问题,但是简化了,只是让验证而已 | |
| 1132 | ||
| 1136 | 字符串处理数字加减 | 可二刷 |
| 1140 | 字符串处理 | 二刷 |
| 1144 | ||
| 1148 | 狼人杀 | |
| 1152 | 字符串处理(自己想麻烦了) | 二刷 |
25分段
25分的题目比20分的题目多了解决方法和备注。没有标注解决方法的题目是因为比较简单或者涉及的解决方法已经在其他题目中使用。
| 题号 | 知识点 | 解决方法 | 是否建议二刷 | 备注 |
|---|---|---|---|---|
| 1002 | 模拟多项式加 | |||
| 1003 | 图 | 最短路径+点权+最短路径数量 | ||
| 1006 | 查找元素 | |||
| 1007 | DP | 最大连续子序列 | 可二刷 | |
| 1009 | 时间处理 | |||
| 1010 | 二分法 | 基数数字转换 | 这里如果不使用二分法,只有一个测试点过不去 | |
| 1012 | 排序 | 结构体排序 | 亮点在,对四门课同样的排序可以只写一个cmp,结构体中用数组即可 | |
| 1013 | 图 | 无向图的连通分量 | ||
| 1016 | 排序 | |||
| 1017 | 模拟银行 | |||
| 1020 | 二叉树查找树 | |||
| 1021 | 图 | 无向图+连通分量+最深结点*2 | ||
| 1024 | 大整数 | |||
| 1025 | 排序 | |||
| 1028 | 排序 | |||
| 1029 | two pointers | |||
| 1032 | 链表 | |||
| 1033 | 贪心 | |||
| 1036 | 查找元素 | |||
| 1037 | 贪心 | |||
| 1039 | STL应用 | |||
| 1040 | DP | |||
| 1043 | 二叉查找树 | |||
| 1044 | 二分查找 | |||
| 1047 | STL应用 | |||
| 1048 | 散列 | |||
| 1051 | 栈 | 判断序列是否为出栈序列 | 二刷 | 这里可用这种最笨的方法来输出所有栈的结果 |
| 1052 | 链表 | 模拟静态链表,有点坑 | 二刷 | 里面有很多好的写法 |
| 1055 | 排序 | 结构体排序 | 有点水 | |
| 1056 | 队列 | 可二刷 | 题目不是多难,就是开始想岔了,没读懂题目 | |
| 1059 | 素数表建立 | 数的素数分解 | 二刷 | 这题变形可出关于正整数的因子个数 |
| 1060 | 科学计数法 | |||
| 1062 | 排序 | 排序,cmp+sort | ||
| 1063 | set,STL应用 | set应用 | ||
| 1066 | avi | AVI的建立 | 可二刷 | 这次使用的是静态链表方法 |
| 1067 | 贪心 | 贪心+排序 | 二刷 | 挺绕的一题 |
| 1070 | 贪心 | 贪心 | 有一个测试用例没过,然后发现因为float的数据被我认为是int了 | |
| 1071 | map,STL | 字符串处理 | 这里使用两个字符串统计单词,要比之前我只用索引来确定方便很多 | |
| 1074 | 链表 | 静态链表反转 | 二刷 | 数据和地址分离,直接反转地址,太特么秀了 |
| 1078 | hash | Hash二次探测法 | ||
| 1079 | 树 | 树+找叶结点+深度 | ||
| 1082 | 字符串处理 | 数字的中国传统读法 | ||
| 1083 | 排序 | 排序 | 水题 | |
| 1085 | 二分法 | |||
| 1086 | 树 | 先序中序转后序 | ||
| 1089 | 判断排序方法 | 二刷 | ||
| 1090 | 树 | 树+找叶结点+深度 | ||
| 1093 | 逻辑题 | |||
| 1094 | 树 | 树+最多结点层数 | ||
| 1097 | 链表 | 链表分割 | 可二刷 | 仍然是用那种无赖的方法,很爽 |
| 1098 | 判断排序方法 | 堆排序+插入排序 | 与1089一起二刷 | |
| 1101 | 快排 | 快排特点 | ||
| 1102 | 树 | 树+层序+中序 | indices:指数 | |
| 1105 | 模拟 | 打印螺旋形矩阵 | 二刷 | |
| 1106 | 树 | 树+DFS+叶子最小的层 | 可以二刷 | |
| 1109 | 逻辑题 | 拍照站位 | 不知道为啥错 | |
| 1110 | 完全二叉树 | 判断一个树是不是完全二叉树 | 可二刷 | |
| 1113 | 排序+贪心 | 贪心 | 有点水 | |
| 1115 | 二叉查找树 | 二叉查找树+静态构建 | 二刷(必须) | |
| 1114 | 并查集 | 并查集统计很多 | 二刷 | |
| 1117 | 逻辑题 | 读懂题意就较为简单 | ||
| 1118 | 并查集 | 并查集统计集合和元素个数 | 二刷 | |
| 1121 | set应用 | hash用法 | ||
| 1122 | 图 | 哈密顿环 | 二刷 | 可以再做,被自己写复杂了 |
| 1125 | 贪心 | 贪心,排序 | 题目不难,就是浮点数向整数舍入有点恶心 | |
| 1126 | 图 | 欧拉图 | 这里需要判断图是否连通 | |
| 1129 | set应用,运算符重载 | |||
| 1130 | 树 | 表达式树+中序 | ||
| 1133 | 链表 | 模拟链表处理 | 链表处理不能忘了去不用的结点,并且有种非常无赖的方法 | |
| 1134 | hash | hash_set | 这题如果使用set,则200多毫秒,如果使用hash_set则快些 | |
| 1137 | map映射,排序 | float转int | 四舍五入:round 向上取整:ceil 向下取整:floor,强转 | |
| 1138 | 树 | 二叉树先序+中序转后序 | 可二刷 | 这里需要剪枝,另外这种代码可以不建树,直接由建树代码改造 |
| 1141 | map,排序 | map,STL的应用 | 这里有个坑:浮点转整形时,计算sum时,将sum全计算完再做,若每次都转再相加,精度严重丢失 case insensitive:不区分大小写 | |
| 1142 | 图 | 找完全图 | ||
| 1145 | 哈希 | Hash二次探测法+查找 | 二刷 | |
| 1146 | 图 | topo排序 | 二刷 | 可以再做,被自己写复杂了 |
| 1149 | STL应用 | set应用 | 水题 | |
| 1150 | 图 | 旅行商问题+哈密顿变体 | ||
| 1153 | 排序,模拟 | 排序 | 二刷 | 答案的结构体设置特别好 |
| 1154 | hash 图 | 图+边两端结点颜色不同 | 注意如何存储一个一个的边 |
30分段
30分的题目多了解决方法和备注。没有标注解决方法的题目是因为比较简单或者涉及的解决方法已经在其他题目中使用。
| 题号 | 知识点 | 解决方法 | 是否建议二刷 | 备注 |
|---|---|---|---|---|
| 1004 | 树遍历 | |||
| 1014 | 队列 | |||
| 1018 | 图 | DFS+Dijkstra+三value | 二刷 | |
| 1022 | map映射,STL使用 | |||
| 1026 | 模拟,排序 | |||
| 1030 | 图 | Dijkstra+二value | ||
| 1034 | 图 | DFS+连通分量+分量所有边权和 | ||
| 1038 | 贪心 | |||
| 1045 | DP | |||
| 1049 | 数学 | |||
| 1053 | 树遍历 | DFS找路 | 可二刷 | |
| 1057 | 树状数组 | 使用树状数组求序列中第k大数据 | 二刷 | |
| 1064 | 二叉查找树 | 在构建好的完全二叉树上先序遍历+层序遍历 | 可二刷(较水) | |
| 1068 | 01背包,DP | |||
| 1072 | 图 | Dijkstra+三value | 二刷 | atoi需要stdlib包 |
| 1076 | 图 | BFS+统计多少层以内结点数目 | 可二刷 | |
| 1080 | 排序 | |||
| 1087 | 图 | Dijkstra+DFS+三value | 可二刷 | 比较耗时间 |
| 1091 | 三维bfs | |||
| 1095 | map,排序 | |||
| 1099 | 二叉查找树 | 静态二叉查找树构建 | 二刷 | |
| 1103 | 深度优先搜索DFS | |||
| 1107 | 并查集 | 使用并查集即可 | 可二刷 | |
| 1111 | 图 | Dijkstra+DFS+四value,两次Dijkstra | 可二刷 | 这题理解错题意,浪费了时间 |
| 1119 | 二叉查找树 | 先序后序->中序 | 二刷 | |
| 1123 | avi树 | avi树构建+BFS+CBT | 二刷 | |
| 1127 | 树 | 后序中序->层序) | 可二刷 | 常规 |
| 1131 | 图 | 打印最短路径的格式太难了 | ||
| 1135 | 红黑树 | 判断一棵树是不是红黑树 | 二刷 | 里面有求树高和判断左右子树是否等高的代码 |
| 1139 | 图 | 题目时间改了,用DFS最后一个用例超时,可以直接暴力法,终点和起点同时遍历一个结点 | ||
| 1143 | 二叉查找树 | LCA+数据排好序就是查找树的中序遍历 | 可二刷 | |
| 1147 | 堆 | 判断堆是大根小根还是不是堆 | 可二刷 | |
| 1151 | 树 | LCA | 二刷 | |
| 1155 | 堆 | 判断是大根堆小根堆还是不是堆 | 二刷 |
知识点整理
知识点整理是考前临时抱佛脚看的,有两份,第一份较为详细,第二份较为精简。主要是一些样板代码和一些做题的注意点。
下面放的是详细版本的,PDF版本可以点击这里详细版本pdf。同时精简版本的PDF可以查看这里精简版本pdf
详细版知识点整理
树状数组
int getSum(int x){
求 c[1,x]的 sum
int sum = 0;
for(int i = x;i >= 1;i -=lowbit(i))
sum+=c[i];
return sum;
}
void update(int x,int v){
for(int i = x;i < MAXN;i+=lowbit(i))
c[i]+=v;
}
DP(动态规划)
- 最大连续子序列:
dp[i] = max(A[i],dp[i]+A[i]); - 最长不下降子序列:
dp[i] = max(1,dp[j]+1) (j=1,2,……,i-1, A[j]<=A[i]) - 最长回文库:
for(int i = 0;i < n;i++){ dp[i][i] = 1; if(i>0&&A[i-1]==A[i]){ dp[i-1][i] = 1; ans = 2; } } for(int L = 3;L <= len;L++){ for(int i = 0;i + len - 1 < len;i++){ int j = i+len-1; if(dp[i+1][j-1]==1&&A[i]==A[j]){ dp[<

本文分享了PAT备考经验,分析了PAT命题趋势,从20分、25分到30分的题目进行了详细分类,提供了备考资源和知识点整理,旨在帮助考生高效备考。
1861

被折叠的 条评论
为什么被折叠?



