
PAT (Advanced Level)
PAT甲级刷题记录
limboWang
这个作者很懒,什么都没留下…
展开
-
PAT甲级-1151 LCA in a Binary Tree (30 分)
题目:1151 LCA in a Binary Tree (30 分) 分析:一般二叉树的LCA#include <iostream>#include<cstring>#include<vector>#include<stdio.h>#include<queue>#include<math.h>#include<stack>#include<algorithm>#include<map.原创 2021-03-05 11:44:16 · 107 阅读 · 0 评论 -
PAT甲级-1143 Lowest Common Ancestor (30 分)
题目:1143 Lowest Common Ancestor (30 分) 分析:第一次写的时候先建树,然后在树中向父母进行查找判断,很麻烦。看了题解之后发现可以利用二叉树的特性来解决。#include<iostream>#include<algorithm>#include<math.h>#include<cstring>#include<queue>#include<stack>#include<map>.原创 2021-03-05 10:42:08 · 121 阅读 · 1 评论 -
PAT甲级-1140 Look-and-say Sequence (20 分)
题目:1140 Look-and-say Sequence (20 分) 分析:模拟。第一次看题,意思理解了一会┭┮﹏┭┮例如第一个是:11231,那么下一个就是:12213111因为第一个中有2个1,1个2,1个3,1个在这里插入代码片1,所以对应的是:12,21,31,11#include<iostream>#include<algorithm>#include<math.h>#include<cstring>#include<qu.原创 2021-03-04 12:49:22 · 127 阅读 · 1 评论 -
PAT甲级-1139 First Contact (30 分)
题目:1139 First Contact (30 分) 分析:模拟,排序,本题性别为女时,负号只是一个标志,若出现了-2200 则不可能在出现2200,因此也可以用int来,不需要字符串#include <iostream>#include <vector>#include <string.h>#include<stdio.h>#include<queue>#include<map>#include<algor.原创 2021-03-04 12:23:21 · 320 阅读 · 1 评论 -
PAT甲级-1130 Infix Expression (25 分)
题目:1130 Infix Expression (25 分) 分析:输出二叉树对应的表达式,中序输出即可,注意最外面是没有括号的。#include<iostream>#include<algorithm>#include<math.h>#include<cstring>#include<queue>#include<stack>using namespace std;int n,m,k;struct Node{.原创 2021-03-03 11:18:32 · 123 阅读 · 0 评论 -
PAT甲级-1119 Pre- and Post-order Traversals (30 分)
题目:1119 Pre- and Post-order Traversals (30 分) 分析:二叉树,前序和后序判断是否唯一,输出中序#include <iostream>#include <vector>#include <string.h>#include<stdio.h>using namespace std;typedef struct node{ int left = -1; int right = -1;};.原创 2021-02-21 12:46:55 · 128 阅读 · 0 评论 -
PAT甲级-1118 Birds in Forest (25 分)
题目:1118 Birds in Forest (25 分) 分析:并查集,和1107 social cluster很像,本题要在findFa函数中进行路径压缩,否则有一个测试点会超时,并查集还是要多练,太菜了#include <iostream>#include<cstring>#include<vector>#include<map>#include<math.h>#include<stdio.h>#include.原创 2021-02-21 12:21:28 · 289 阅读 · 0 评论 -
PAT甲级-1117 Eddington Number (25 分)
题目:1117 Eddington Number (25 分) 分析:从大到小排序,找出第一个里程数小于等于i的天数,即第i天为答案(自己看题都没理解是什么意思,垃圾题目┭┮﹏┭┮,可恶)#include <iostream>#include<cstring>#include<vector>#include<map>#include<stdio.h>#include<math.h>#include<algorit.原创 2021-02-21 11:19:18 · 164 阅读 · 0 评论 -
PAT甲级-1114 Family Property (25 分)
题目:1114 Family Property (25 分) 分析:排序+并查集,主要就是数据的查找比较麻烦一点点#include <iostream>#include<cstring>#include<vector>#include<map>#include<stdio.h>#include<math.h>#include<algorithm>using namespace std;#define M.原创 2021-02-20 15:03:55 · 138 阅读 · 0 评论 -
PAT甲级-1112 Stucked Keyboard (20 分)
题目:1112 Stucked Keyboard (20 分) 分析:模拟,判断是否为坏键#include <iostream>#include<cstring>#include<vector>#include<map>#include<stdio.h>#include<math.h>#include<algorithm>using namespace std;#define MAX 999999999.原创 2021-02-20 14:25:45 · 98 阅读 · 0 评论 -
PAT甲级-1109 Group Photo (25 分)
题目:1109 Group Photo (25 分) 分析:模拟,第二次写卡了巨久,结果发现ans数组的第二维开的不够大,导致测试点4过不去,我真的醉了。因此ans第一维开小点,第二维要到10^4#include <iostream>#include<cstring>#include<vector>#include<stdio.h>#include<algorithm>using namespace std;int n,m,k;.原创 2021-02-18 16:11:18 · 152 阅读 · 1 评论 -
PAT甲级-1108 Finding Average (20 分)
题目:1108 Finding Average (20 分) 分析:模拟,判断是否为题目要求的合法序列。第一次好像是参考别人代码写的,第二次自己写的比较复杂1、#include <iostream>#include<cstring>#include<vector>#include<stdio.h>#include<queue>#include<math.h>#include<stack>#include.原创 2021-02-18 14:54:12 · 125 阅读 · 0 评论 -
【算法】并查集
int findFa(int x){ if(fa[x] == x) return x; return findFa(fa[x]);}void uni(int a,int b){ fa[findFa(a)] = findFa(b);}路径压缩:只要我们在查询(findFa函数中)的过程中,把沿途的每个节点的父节点都设为根节点即可:int findFa(int x){ if(fa[x] == x) return x; fa[x] = findFa(f原创 2021-02-18 14:14:34 · 333 阅读 · 0 评论 -
PAT甲级-1107 Social Clusters (30 分)
题目:1107 Social Clusters (30 分) 分析:并查集的使用。#include <iostream>#include<cstring>#include<vector>#include<stdio.h>#include<algorithm>using namespace std;int n,m,k;int fa[100001];int hob[100001];int findFa(int x){ .原创 2021-02-18 14:05:23 · 92 阅读 · 0 评论 -
PAT甲级-1105 Spiral Matrix (25 分)
题目:1105 Spiral Matrix (25 分) 分析:模拟,螺旋数组输出#include <iostream>#include<cstring>#include<vector>#include<stdio.h>#include<algorithm>using namespace std;int n,k,p;int cmp(int a,int b){ return a > b;}int a[10000.原创 2021-02-17 15:07:39 · 124 阅读 · 0 评论 -
PAT甲级-1103 Integer Factorization (30 分)
题目:1103 Integer Factorization (30 分) 分析:利用DFS从大到小进行。#include <iostream>#include<cstring>#include<vector>#include<stdio.h>using namespace std;int n,k,p;vector<int> fac,ans,temp;int maxFacSum;void init(){ int i =.原创 2021-02-17 12:33:35 · 132 阅读 · 0 评论 -
PAT甲级-1101 Quick Sort (25 分)
题目:1101 Quick Sort (25 分) 分析:快速排序(其实和快排没有关系。。。),找出pivot的个数即可,要求增序输出,最后还要输出个换行,不然会有一个测试点通过不了#include <iostream>#include<cstring>#include<vector>#include<stdio.h>#include<queue>#include<math.h>#include<stack>.原创 2021-02-17 11:47:15 · 109 阅读 · 0 评论 -
PAT甲级-1098 Insertion or Heap Sort (25 分)
题目:1098 Insertion or Heap Sort (25 分) 分析:插入排序和堆排序,其中堆排的关键:建堆和向下调整。#include <iostream>#include<cstring>#include<vector>#include<stdio.h>#include<queue>#include<math.h>#include<stack>#include<algorithm&g.原创 2021-02-16 09:52:07 · 116 阅读 · 0 评论 -
PAT甲级-1095 Cars on Campus (30 分)
题目:1095 Cars on Campus (30 分) 分析:要求输出某个时刻停车场的人数,若in和out不匹配则本条记录无效,如in之后还是in则该辆车是无效的。本题防止超时的关键就是给的query是递增的,就不用每次都从0开始遍历。#include <iostream>#include<cstring>#include<vector>#include<stdio.h>#include<queue>#include<ma.原创 2021-02-15 20:09:03 · 145 阅读 · 0 评论 -
PAT甲级-1097 Deduplication on a Linked List (25 分)
题目:1097 Deduplication on a Linked List (25 分) 分析:模拟,输出结果链表和删除的链表,两个链表!#include <iostream>#include<cstring>#include<vector>#include<stdio.h>#include<queue>#include<math.h>#include<stack>#include<algorit.原创 2021-02-15 21:05:09 · 123 阅读 · 0 评论 -
PAT甲级-1093 Count PAT‘s (25 分)
题目:1093 Count PAT’s (25 分) 分析:计算A前面P的个数,A后面T的个数,相乘累加即可。#include <iostream>#include<cstring>#include<vector>#include<stdio.h>#include<queue>#include<math.h>#include<stack>#include<algorithm>#include.原创 2021-02-14 11:34:14 · 121 阅读 · 0 评论 -
PAT甲级-1087 All Roads Lead to Rome (30 分)
题目:1087 All Roads Lead to Rome (30 分) 分析:根据题意DFS即可,只不过城市名是字符串,用map。#include <iostream>#include<cstring>#include<vector>#include<stdio.h>#include<queue>#include<math.h>#include<stack>#include<algorithm&.原创 2021-02-07 16:11:32 · 140 阅读 · 0 评论 -
PAT甲级-1086 Tree Traversals Again (25 分)
题目:1086 Tree Traversals Again (25 分) 分析:根据二叉树的前序和中序建树,输出后序。#include <iostream>#include<cstring>#include<vector>#include<stdio.h>#include<queue>#include<math.h>#include<stack>#include<algorithm>#inc.原创 2021-02-06 11:59:32 · 99 阅读 · 1 评论 -
PAT甲级-1085 Perfect Sequence (25 分)
题目:1085 Perfect Sequence (25 分) 分析:查找,使用二分法#include <iostream>#include<cstring>#include<vector>#include<stdio.h>#include<queue>#include<math.h>#include<stack>#include<algorithm>#include<map>.原创 2021-02-06 11:34:17 · 161 阅读 · 0 评论 -
PAT甲级-11076 Forwards on Weibo (30 分)
题目:1076 Forwards on Weibo (30 分) 分析:BFS的使用,若用DFS会漏掉许多情况,比较麻烦。#include <iostream>#include<cstring>#include<vector>#include<stdio.h>#include<queue>#include<math.h>#include<stack>#include<algorithm>#i.原创 2021-02-03 13:21:10 · 110 阅读 · 0 评论 -
PAT甲级-1074 Reversing Linked List (25 分)
题目:1074 Reversing Linked List (25 分) 分析:模拟即可。本题利用reverse函数可以方便很多,代码如下:#include <iostream>#include<cstring>#include<vector>#include<stdio.h>#include<queue>#include<math.h>#include<stack>#include<algorit.原创 2021-02-02 18:33:58 · 115 阅读 · 0 评论 -
PAT甲级-1073 Scientific Notation (20 分)
题目:1073 Scientific Notation (20 分) 分析:模拟即可,理清三种情况。#include <iostream>#include <stdio.h>#include <stdlib.h>#include <vector>#include <stack>#include <set>#include <map>#include <math.h>#include <.原创 2021-02-02 17:59:57 · 126 阅读 · 0 评论 -
PAT甲级-1072 Gas Station (30分)(迪杰斯特拉算法即可,DFS会超时)
题目:1072 Gas Station (30分) 分析:路径问题,用DFS会超时,使用迪杰斯特拉得出dis数组即可。注意!!!有个小坑:station不只是1-9,有可能是两位数以上,10,11,等等,因此在输入的时候字符串的处理要注意,不然最后一个测试点会报错。AC代码(dj):#include <iostream>#include <stdio.h>#include <stdlib.h>#include <vector>#include .原创 2021-01-31 19:05:07 · 245 阅读 · 0 评论 -
PAT甲级-1071 Speech Patterns (25分)
题目:1071 Speech Patterns (25分) 分析:模拟即可,使用map存放,注意最后一个测试点(要统计最后一个单词,for循环结束后temp要继续加1,不然会出错)。#include <iostream>#include <stdio.h>#include <stdlib.h>#include <vector>#include <stack>#include <set>#include <map&.原创 2021-01-31 17:35:43 · 118 阅读 · 0 评论 -
PAT甲级-1068 Find More Coins (30分)
题目:1068 Find More Coins (30分) 分析:背包问题,使用了滚动数组(刚开始看没看懂,看了好久,太菜了)。记录选择的方法在DP中比较常用。使用二维数组存放,v的枚举是顺序还是逆序都无所谓,但是!!!如果使用一维(滚动数组)存放,必须逆序。#include <iostream>#include<cstring>#include<vector>#include<stdio.h>#include<queue>#in.原创 2021-01-29 14:11:42 · 165 阅读 · 0 评论 -
PAT甲级-1067 Sort with Swap(0, i) (25分)
题目:1067 Sort with Swap(0, i) (25分) 分析:模拟,第二次写还是超时了,回过头看第一次写的代码┭┮﹏┭┮。AC代码:#include <iostream>#include<cstring>#include<vector>#include<stdio.h>#include<queue>#include<math.h>#include<stack>#include<alg.原创 2021-01-29 13:18:45 · 88 阅读 · 0 评论 -
PAT甲级-1066 Root of AVL Tree (25分)
题目:1066 Root of AVL Tree (25分) 分析:AVL树的建立,理解了AVL的概念之后就好下手。#include <iostream>#include <stdio.h>#include <stdlib.h>#include <vector>#include <stack>#include <set>#include <map>#include <math.h>#incl.原创 2021-01-29 12:04:51 · 82 阅读 · 0 评论 -
PAT甲级-1065 A+B and C (64bit) (20分)
题目:1065 A+B and C (64bit) (20分) 分析:比较大小,存在溢出的问题,代码如下,但是测试数据有个问题这样输出不应该是true吗,然而代码也可以过。测试数据有问题?#include <iostream>#include <stdio.h>#include <stdlib.h>#include <vector>#include <stack>#include <set>#include <.原创 2021-01-27 18:57:25 · 84 阅读 · 0 评论 -
PAT甲级-1063 Set Similarity (25分)
题目:1063 Set Similarity (25分) 分析:set集合的使用,在查找相同元素时使用set.find()方法,如果直接查找会超时。本题中两个集合(元素不相同)的元素总数 = 两集合长度之和 - 相同元素个数。#include <iostream>#include <stdio.h>#include <stdlib.h>#include <vector>#include <stack>#include <set.原创 2021-01-26 14:14:37 · 91 阅读 · 0 评论 -
PAT甲级-1059 Prime Factors (25分)
题目:1059 Prime Factors (25分) 分析:素数和质因子的使用#include <iostream>#include <stdio.h>#include <stdlib.h>#include <vector>#include <stack>#include <map>#include <math.h>#include <queue>#include <algorith.原创 2021-01-26 13:29:30 · 74 阅读 · 0 评论 -
PAT甲级-1057 Stack (30分)
题目:1057 Stack (30分) 分析:暴力会超时,这题有两种解法,分别为分块思想和树状数组。解法一:分块思想(点我!)#include <iostream>#include <stdio.h>#include <stdlib.h>#include <vector>#include <stack>#include <map>#include <queue>#include <algorith.原创 2021-01-25 19:24:33 · 134 阅读 · 0 评论 -
PAT甲级-1056 Mice and Rice (25分)
题目:1056 Mice and Rice (25分) 题意:每次在m个中找到最大的进入下一轮排名,不足m个同样进行找最大进行题意理解错误(卡了好久):第三行输入的输入6 0 8 7…的意思是:第一个是编号为6,第二个为编号为0,而不是编号为6的为第一个… 分析:队列的使用,模拟#include <iostream>#include <stdio.h>#include <stdlib.h>#include <vector>#include &.原创 2021-01-25 16:13:37 · 95 阅读 · 0 评论 -
PAT甲级-1053 Path of Equal Weight (30分)
题目:1053 Path of Equal Weight (30分) 分析:排序题,这里输出的时候直接sort,没有写cmp函数,则从尾部开始输出,或者也可以在输入的时候对每个节点的孩子进行sort(很多博客都是这样写的,代码都一样,但还是要根据自己的思路来比较好)#include <iostream>#include <stdio.h>#include <stdlib.h>#include <vector>#include <stack&.原创 2021-01-24 15:03:04 · 148 阅读 · 0 评论 -
PAT甲级-1051 Pop Sequence (25分)
题目:1051 Pop Sequence (25分) 分析:栈的模拟,判断序列是否能为出栈序列,这种模拟有点小绕,关键要理清逻辑#include <iostream>#include <stdio.h>#include <stdlib.h>#include <vector>#include <stack>#include <map>#include <algorithm>#define MAX 99999.原创 2021-01-24 13:52:03 · 166 阅读 · 0 评论 -
PAT甲级-1048 Find Coins (25分)
题目:1048 Find Coins (25分) 分析:暴力会超时,二分法即可#include <iostream>#include <stdio.h>#include <stdlib.h>#include <vector>#include <map>#include <algorithm>#define MAX 999999999using namespace std;int n,m,k;int main().原创 2021-01-24 12:57:44 · 115 阅读 · 0 评论