![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
PAT
九筒-
这个作者很懒,什么都没留下…
展开
-
PAT甲组1153 Decode Registration Card of PAT思路解析和代码
A1153题目链接题意三个数据查询同一等级考试的成绩由高到低输出,分数相同,按字母序输出id同一考点的人数和总分数同一时间各考点的考试人数并排序 ,人数降序,人数相同则考点id升序个人思路本题是模拟题,考查STL和结构体排序个人思路声明了一堆容器,数组来进行存储,结果还是错误,只过了两条几个BUG代码问题出在查询1上,当前等级人数为0时,输出NA;以及查询3,把tim...原创 2020-04-25 20:49:59 · 186 阅读 · 0 评论 -
PAT甲组1154 Vertex Coloring 思路解析和代码
A1154题目链接个人思路题意给出图和个顶点颜色,要求图中相邻顶点的颜色不同,有相同颜色输出no,否则输出颜色的个数思路存储图(由于数据量1e4,邻接表存储)存储颜色,set去重表示颜色数量遍历图中各个顶点的相邻顶点,判断颜色是否相同个人思路代码#include <bits/stdc++.h>using namespace std;const int max...原创 2020-04-25 17:36:52 · 143 阅读 · 0 评论 -
PAT甲组1155 Heap Paths 思路解析和代码
A1155题目链接个人思路题意给定完全二叉树层序序列,输出从根节点到所有叶子节点的路径(先输出右子节点),判断堆的类型思路dfs遍历树(要注意回溯,做完本题对dfs的反向操作有了更深的理解)输出路径的过程中判断大小堆注意由于大顶堆,小顶堆的根节点都有可能等于子节点,因此不能只判断heap[1]和heap[2]的大小,就断定是大顶堆还是小顶堆,最好使用while判断,但是测试点...原创 2020-04-25 17:06:25 · 186 阅读 · 0 评论 -
PAT甲组1152 Google Recruitment思路解析和代码
A1152题目链接个人思路题意给出一串数字,找出第一个K位素数思路遍历字符串枚举K位字符串转换为整数判断是否是素数个人思路代码#include <bits/stdc++.h>using namespace std;int L, K;string str;int change(string s){ int result = 0; for(int i ...原创 2020-04-24 20:29:43 · 154 阅读 · 0 评论 -
PAT甲组1151 LCA in a Binary Tree思路解析和代码
A1151题目链接个人思路题意给出中序前序,找出一对测试节点的最深公共根节点思路与1143 Lowest Common Ancestor类似,但思考起来要比1143难,本题给出的是中序和前序而不是二叉搜索树,所以比较起来有些麻烦起初思考利用中序构造二叉树,但是如何得到公共根节点?一开始的想法是公共根节点一定在两个测试节点之间(中序序列中),枚举两个节点之间的点,判断该节点是不是公共根...原创 2020-04-24 18:36:15 · 260 阅读 · 0 评论 -
PAT甲组1150 Travelling Salesman Problem思路解析和代码
A1150题目链接个人思路题意给出图的遍历路径,判断该路径是否是旅行商路径,若是则继续判断是否简单旅行商路径(除源点外,每个顶点只访问一次)思路无效路径:路径中两点之间不存在边不是旅行商路径:序列起点终点不同 || 序列顶点个数不足N + 1个(两次访问源点)普通旅行商路径:除了源点之外,多次访问其他顶点简单旅行商路径:除了源点之外,其他路径均访问了一次注意一开始if判...原创 2020-04-24 10:40:34 · 164 阅读 · 0 评论 -
PAT甲组1148 Werewolf - Simple Version思路解析和代码
A1148题目链接个人思路题意小学奥数的逻辑推理问题,每个人阐述自己或其他人的身份,只有一狼一人说谎,判断狼人的身份思路起初拿到题目有点无从下手,不像其他算法题目,题目中基本就告诉了解题思路。这道题目需要具备将实际问题转化为计算机可以解决的问题的能力。(我也是看了柳神的思路才有眉目的)个人采用暴力枚举的方法,用双重for循环枚举出两个狼人(刚好可以满足多个解时,最先得到的是最小解),...原创 2020-04-23 15:42:14 · 150 阅读 · 0 评论 -
PAT甲组1149 Dangerous Goods Packaging思路解析和代码
A1149题目链接个人思路题意给出一批货物,判断这批货物中是否都能共存思路用二维vector存储每个货物与其不能共存的物品,暴力遍历即可通过注意一种货物可能有多个不能共存的物品,因此不能单纯的使用map1e6数据范围的二维vector也没有超限,看来vector的潜力很大个人思路代码#include <bits/stdc++.h>using namespac...原创 2020-04-23 11:12:08 · 192 阅读 · 0 评论 -
PAT甲组1146 Topological Order 思路解析和代码
A1146题目链接个人思路题意本题考查拓扑排序,输出不是拓扑序列的编号思路理解拓扑排序的原理这道题还是比较好做的,记录各个节点的入度,遍历给出的拓扑序列的顶点,如果当前顶点入度为0,说明当前拓扑序正确,并将与该顶点相连的其他顶点入度减1,入度不为0则说明拓扑序错误注意K次查询,记得保存初始入度并每次进行初始化个人思路代码#include <bits/stdc++.h&...原创 2020-04-23 09:47:05 · 140 阅读 · 0 评论 -
PAT甲组1145 Hashing - Average Search Time思路解析和代码
A1145题目链接题意模拟二次探测再散列的原理,输出其中无法插入的数据,输出平均查找长度样例解释15无法插入,探测结果一直在1,4间反复横跳,因此输出15 cannot be inserted.2.8的来历:11比较了2次,4比较了1次,15比较了6次,2比较了2次(格外要注意数据2!!)个人思路感觉题目有些地方没有提及到,也许是自己对二次探测再散列理解还不够透彻拿到题目在纠结几...原创 2020-04-21 20:38:55 · 175 阅读 · 0 评论 -
PAT甲组1144 The Missing Number思路解析和代码
A1144题目链接个人思路本题考查散列将给出的数据做标记,并记录数据中的最大值,从1到maxn + 1访问map,第一个不存在的数即为最小的不在序列中的整数注意连续的数据,输出maxn + 1全为负数的数据,输出1个人思路代码#include <bits/stdc++.h>using namespace std;const int maxn = 1e5 + 1...原创 2020-04-21 10:57:43 · 139 阅读 · 0 评论 -
PAT甲组1143 Lowest Common Ancestor思路解析和代码
A1143题目链接个人思路最初拿到题目认为本题考查二叉树的基本操作(构建,插入,查找)+二叉树的遍历按这个思路先构建二叉排序树(未发现数据顺序就是二叉排序树的前序遍历);用查找的方法判断测试数据是否是树的节点(未想到用map做hashtable即可);最后卡到了寻找共同根节点上了(由于二叉排序树,通过找根节点和子节点之间的规律即可判断),起初想bfs遍历树,然后将每个节点的前驱存入各自的v...原创 2020-04-21 10:33:32 · 164 阅读 · 0 评论 -
PAT甲组1147 Heaps思路解析和代码
A1147题目链接个人思路本题考查完全二叉树的性质和静态存储以及堆的性质思路若root = i,left = 2 * i,right = 2 * i + 1(下标从1开始),先比较tree[1],tree[2]暂定堆的类别,遍历所有节点判断根节点和其子节点的大小是否和假定的一致。最后后序遍历静态数组注意下标从1开始注意left和right是否越界(超过n)个人思路代码#in...原创 2020-04-19 17:34:17 · 124 阅读 · 0 评论 -
PAT甲组1142 Maximal Clique思路解析和代码
A1064题目链接个人思路本题考查图的存储和散列题意输入图中顶点的子集,判断各个顶点之间是否均存在边,若均存在且集合外其他顶点无法再加入集合,则为Yes(maximal clique);若集合外存在其他顶点满足与集合内各顶点相连,则为not maximal;若集合内各顶点存在不相连的情况,则为 not a clique思路顶点的子集满足这个条件:遍历子集中所有顶点的所有邻边,存在边...原创 2020-04-19 16:52:54 · 138 阅读 · 0 评论 -
PAT甲组1141 PAT Ranking of Institutions思路解析和代码
A1141题目链接个人思路本题为模拟题,对算法要求不高,但对代码效率有一定要求。要求输入所有学生信息,统计各个学校的学生人数,学校的加权分数,按分数排名,按成绩降序输出,成绩一致按人数升序输出,仍一致再按学校名称升序输出一开始的代码没有任何优化,还有很多没有必要的数据结构占着内存student结构体浪费空间school结构体中的vector浪费空间重新遍历计算加权分数浪费时间,在...原创 2020-04-19 11:56:40 · 137 阅读 · 0 评论 -
PAT甲组1139 First Contact思路解析和代码
A1139题目链接个人思路由于数据量是1w,如果用邻接表邻接矩阵存储总觉得会超限声明两个结构体,person存储每个人的id,性别,vector存储朋友id,便于遍历;Helper存储两个中间人的id输入数据,初始化每个人的变量输入一对情侣A喜欢B,在第一个人A的朋友中寻找同性朋友C,在C的朋友中寻找与B同性的朋友D,在D的朋友中如果能找到B,将C,D存入ans中,遍历结束输出答案即...原创 2020-04-18 19:48:35 · 455 阅读 · 0 评论 -
PAT甲组1140 Look-and-say Sequence思路解析和代码
A1140题目链接个人思路本题考查字符串处理,需要好好读题理解题意题意根据前一个字符串中,遍历到某一位key,统计与其连续相同的数字个数cnt,key和cnt作为当前字符串中的两个字符,知道字符串遍历结束给出一个数字D,表示第一个数,如D=1,即第一个数为1由于前一个数为1且只有一位,因此第二个数为11由于前一个数为11,连续1的个数有2个,因此第二个数为12由于前一个数为12...原创 2020-04-18 16:27:17 · 137 阅读 · 0 评论 -
PAT甲组1137 Final Grading思路解析和代码
A1137题目链接个人思路本题属于模拟题,按题目要求使用结构体排序即可注意数组大小不能只开到10010,可能P,M,N中包含的用户各不相同,应该开到30000,否则最后一个测试点会出现段错误个人思路代码#include <bits/stdc++.h>using namespace std;const int maxn = 30010;int P, M, N;stru...原创 2020-04-18 10:02:19 · 168 阅读 · 0 评论 -
PAT甲组1138 Postorder Traversal思路解析和代码
A1138题目链接个人思路本题考查二叉树的遍历和重构根据前序中序重构二叉树,后序遍历二叉树,输出第一个节点一开始觉得5w数据量可能会超时,没想到暴力顺利AC个人思路代码#include <bits/stdc++.h>using namespace std;const int maxn = 50010;int N;int pre[maxn], in[maxn];s...原创 2020-04-17 21:20:08 · 106 阅读 · 0 评论 -
PAT甲组1136 A Delayed Palindrome思路解析和代码
A1136题目链接个人思路本题考查字符串处理+大数运算+回文数判断判断回文数老生常谈的题目,大数运算注意进位的处理(1000位无法用整数表示),同一位的两个运算数相加后加上进位,然后再取模判断maxn设置为1005最后一个测试点出现越界情况,改为1010AC通过个人思路代码#include <bits/stdc++.h>using namespace std;cons...原创 2020-04-17 20:49:47 · 118 阅读 · 0 评论 -
PAT甲组1135 Is It A Red-Black Tree思路解析和代码
A1135题目链接个人思路本题考查树的构建+树的遍历(理解题目要求时关键)总体来说就是根据题目给的条件来判断二叉树是否为红黑树首先看了大佬博客之后才知道,红黑树和二叉平衡树(AVL)是两码事,红黑树的平衡因子并不是1判断依据:根节点为黑色红节点的子节点均为黑色任意节点到其各个叶子节点的路径中,黑节点的个数相同PS:除了红节点就是黑节点无需判断,每个叶子节点(空节点)为黑色(这...原创 2020-04-17 11:37:35 · 135 阅读 · 0 评论 -
PAT甲组1133 Splitting A Linked List 思路解析和代码
A1133题目链接个人思路本题考查链表一开始把题目想复杂了,觉得要运用链表的插入删除操作才能完成,所以想着遍历链表,第一个小于0的数据置为头结点,后序节点进行插入删除操作,发现这样做压根找不到前面链表的头结点(或者逆向遍历链表?不断更新头结点?)乱七八糟的错误代码bool ishead = false;//是否确定了头结点 int pos = head;for(int i = 0;...原创 2020-04-16 14:00:51 · 112 阅读 · 0 评论 -
PAT甲组1134 Vertex Cover思路解析和代码
A1134题目链接个人思路本题考查图的存储访问,再次基础上考查散列(STL)题意给出一个图和顶点集合,如果顶点能覆盖图中所有的边,称其为vertex cover思路数据结构使用两个map,edges存储原图中所有的边的hash值,vis记录点集能覆盖到的边;edges中将所有边初始化为1,将edges赋值给vis进行初始化,查询过程中覆盖到的边为2当edges[ehash] =...原创 2020-04-16 10:36:08 · 175 阅读 · 0 评论 -
PAT甲组1132 Cut Integer思路解析和代码
A1132题目链接个人思路本题考查字符串处理,字符串和数字的相互转换要注意除数a,b等于0的问题个人思路代码#include <bits/stdc++.h>using namespace std;int N;int main(int argc, char *argv[]) { scanf("%d", &N); getchar(); while(N--)...原创 2020-04-15 17:18:13 · 86 阅读 · 0 评论 -
PAT甲组1131 Subway Map思路解析和代码
A1131题目链接个人思路自增计算辨别transfer stationbfs由于会修改结构体中的step,不太适合多次查询,或者每次都初始化step记录路径,使用1e4的二维结构体,每次查询清空,会影响效率个人思路代码本题思路AC代码...原创 2020-04-15 14:32:01 · 144 阅读 · 0 评论 -
PAT甲组1130 Infix Expression 思路解析和代码
A1130题目链接个人思路本题考查树型存储中缀表达式,难点在于括号输出来区分优先级。刚看题猜着可能是中缀转后缀求逆波兰式了,求逆波兰式用栈也是比较麻烦回到本题,本人做到中序遍历树后卡到输出括号的地方了,一开始想把中序序列存入vector,遍历vector时,根据需要(两个相邻运算符之间输出括号,非运算符与运算符之间输出括号),但是找半天也没有找到规律。参考了其他博客,本题有两种解法技巧...原创 2020-04-12 16:50:41 · 101 阅读 · 0 评论 -
PAT甲组1129 Recommendation System 思路解析和代码
A1129题目链接个人思路题意:对英文阅读理解有一定要求,我就是卡在Access这个词上(应译为访问),结果一直不明白这道题的含义给出用户点击item的次序,要系统根据用户对item的点击次数(最大的优先推荐,次数相等推荐编号最小的),在用户下一次点击item前,给出推荐item编号,推荐个数最多不超过K个PS:第一个item没有推荐,因为之前没有访问记录关键:要完成边插入边排序,在序...原创 2020-04-12 15:08:38 · 162 阅读 · 0 评论 -
PAT甲组1128 N Queens Puzzle思路解析和代码
A1128题目链接个人思路解释样例:一开始图都没看明白,其实并不影响做题,还是解释一下图片吧Figure1:序列在棋盘上的方向是从右向左的Figure2:序列在棋盘山的方向是从下向上的N皇后问题用dfs回溯求解,此题只是检查答案是否合理,因此比较容易一些,关键还是在于对N皇后问题的理解。行:数组的值arr[i]列:数组下标i(已经保证不会重复)斜率为正的斜线:行列之差为常数,为了...原创 2020-04-12 10:36:08 · 171 阅读 · 0 评论 -
PAT甲组1126 Eulerian Path思路解析和代码
A1126题目链接个人思路本题考查图的遍历按照题目要求,这道题还是很简单的Eulerian:连通图&&oddNum == 0Semi-Eulerian:连通图&&oddNum == 2Non-Eulerian:其余输出该项最初没有注意到题目中的connected graphs,不考虑连通时,只有一个测试点报错过程中还由于“Non-Eulerian”...原创 2020-04-10 21:23:40 · 221 阅读 · 0 评论 -
PAT甲组1124 Raffle for Weibo Followers思路解析和代码
A1124题目链接个人思路本题考查散列+STL一开始把题目想复杂了,考虑使用两个map完成名字和序号的对应关系,便于遍历时进行访问,其实在输入数据时,控制下一位中奖者的下标即可个人思路代码#include <bits/stdc++.h>using namespace std;int M, N, S;//map<string, int> name2id;/...原创 2020-04-10 19:57:01 · 92 阅读 · 0 评论 -
PAT甲组1125 Chain the Ropes思路解析和代码
A1125题目链接个人思路本题考查贪心法一开始想到了贪心法,但是没有认真读题,以为是输出能拼接出最长的长度,随后就想到当然是最长的两根拼接在一起最长,还证明了半天,过了三个测试点,一直觉得是输出时,向下取整出错了结果题意要求必须使用N段绳子,得到拼接起来最长的绳子个人思路代码#include <bits/stdc++.h>using namespace std;int...原创 2020-04-10 18:31:42 · 133 阅读 · 0 评论 -
PAT甲组1127 ZigZagging on a Tree思路解析和代码
A1127题目链接个人思路本题考场树的遍历+树的重构难点在s型输出上,奇数层倒序输出,偶数层正序输出,个人采用deque,首尾增删且访问比较方便一开始思路是先将层序结果存储,再用栈存储奇数层的所有节点,发现输出时会异常麻烦,后改为vector,也不太好处理行末空格,所以还是deque在遍历时存储比较方便vector<int> zigzag; bool isPrint = ...原创 2020-04-10 18:23:04 · 202 阅读 · 0 评论 -
PAT甲组1123 Is It a Complete AVL Tree思路解析和代码
A1123题目链接个人思路本题考查平衡二叉树的构造+完全二叉树的判断,形式中规中矩,但是平衡二叉树的理解和编写确实不太容易!判断完全二叉树,在A1110中已经有涉及,需要对树进行广搜遍历,过程中进行判断个人思路代码#include <bits/stdc++.h>using namespace std;int N;struct Node{ int data; int...原创 2020-04-10 11:01:03 · 104 阅读 · 0 评论 -
PAT甲组1122 Hamiltonian Cycle思路解析和代码
A1122题目链接个人思路本题是判断给出的路径是否是哈密顿回路满足哈密顿回路的限制条件很多:路径起点和终点是同一个点才能构成回路路径点数必须等于N + 1才能经过所有点回到起点顶点只能经过一次,不能重复访问个人思路代码#include <bits/stdc++.h>using namespace std;int N, M, K;int G[205][205]...原创 2020-04-10 09:26:58 · 158 阅读 · 0 评论 -
PAT甲组1121 Damn Single思路解析和代码
A1121题目链接个人思路本题考查散列,水题,数据量不算大,可以在O(1)时间内访问元素其中没有伴侣的或伴侣未到场的都认为是单身(和日常的单身概念不太一样)AC代码#include <bits/stdc++.h>using namespace std;const int maxn = 100005;int N, M;int couple[maxn];//记录每个人的...原创 2020-04-09 20:39:00 · 126 阅读 · 0 评论 -
PAT甲级118-155题解析笔记索引-扩充《算法笔记》(解析+思路+AC代码)
前言PAT索引题目类型1001 A+B Format原创 2020-04-09 16:05:25 · 337 阅读 · 0 评论 -
PAT甲组1119 Pre- and Post-order Traversals 思路解析和代码
A1119题目链接个人思路个人思路代码#include <bits/stdc++.h>using namespace std;int N;int pre[105], post[105];struct Node{ int data; int left, right;}nodes[105];int pos;int newNode(int x){ node...原创 2020-04-09 14:08:11 · 234 阅读 · 2 评论 -
PAT甲组1118 Birds in Forest思路解析和代码
A1118题目链接个人思路本题考查并查集,不同的树当做不同的集合,选出一只鸟当做集合的根节点,属于同一集合的鸟进行合并;根节点相同,说明两只鸟属于同一棵树;不同根节点的个数表示树的个数;由于鸟的编号连续,最大编号即为鸟的个数注意数据输入时合并,只能得到局部的根节点,后面需要再次调用findFather(),通过路径压缩更新全局根节点个人思路代码#include <bits/std...原创 2020-04-08 16:04:22 · 140 阅读 · 0 评论 -
PAT甲组1117 Eddington Number 思路解析和代码
A1117题目链接题意理解出现了偏差,一开始理解成求出数字E,满足数据中比E大的数字个数恰好为E,只过了3个测试点;暴力求解比E大的数字个数大于等于E,此时只有一个测试点没过,运行超时个人错误思路只通过了3个测试点输入数据,使用hashtable[]记录每个数据出现的次数hashtable[i]逆序遍历hashtable[i],如果i != hashtable[i + 1] ,当前h...原创 2020-04-08 12:48:23 · 409 阅读 · 0 评论 -
PAT甲组1116 Come on! Let's C思路解析和代码
A1064题目链接个人思路该题考查素数+散列先给出所有人排名第一名是mystery奖励,素数排名是小黄人,其他为巧克力查询,其中可能包含不在排名中的,重复查询的,要特殊处理个人思路代码(素数筛/暴力判断素数两种方法)#include <bits/stdc++.h>using namespace std;const int maxn = 1e4 + 5;bool...原创 2020-04-08 10:00:35 · 128 阅读 · 0 评论