PAT甲级
逝不等琴生
你必须暗自努力,才能显得轻松如意
展开
-
PAT(甲级)2020年春季考试 7-4 Replacement Selection (30分)
前言本人做法(16分,过了前两个测试点,第三个测试点错误,最后三个测试点超时)//// Created by niko on 2020/9/22.////16分#include <bits/stdc++.h>using namespace std;/** * 题意:首先给定n个待排序的数,以及capacity容量, * 首先按照每M个元素分组,分成n/m组(向上取整),随后从第一个组开始,选出最小的数minNow输出到第一个run中, * 随后按顺序从第二个组中选出该组原创 2020-09-22 23:02:19 · 568 阅读 · 0 评论 -
PAT(甲级)2020年春季考试 7-3 Safari Park (25分)
前言参考题解//// Created by niko on 2020/9/22.//#include <bits/stdc++.h>using namespace std;/** * 题意:染色问题,给定n个顶点,r条边的图,k种颜色,给出m种染色方案, * 问对每个顶点染色后,判断相邻的顶点是否颜色相同以及所用的颜色数是否超过k种 * 思路:涉及到统计颜色的数量,故使用set来保存染色方案中的所有颜色,由于涉及到每个 * 颜色信息,相当于点权,故使用结构体存储每个结原创 2020-09-22 22:58:01 · 211 阅读 · 0 评论 -
PAT(甲级)2020年春季考试 7-2 The Judger (25分)
前言参考题解//// Created by niko on 2020/9/22.//#include <bits/stdc++.h>using namespace std;/** * 题意:对于一个数字游戏,输出出局的人在哪一轮出局,以及最终的获胜者 * 思路:见代码注释 * @return */const int N = 12;const int M = 1e3 + 10;int n, m, a[N][M];//a数组存储输入unordered_set<原创 2020-09-22 22:56:28 · 327 阅读 · 0 评论 -
PAT(甲级)2020年春季考试 7-1 Prime Day (20分)
前言参考题解//// Created by niko on 2020/9/22.//#include <bits/stdc++.h>using namespace std;/** * 题意:判断所给的一个日期字符串是否是PrimeDay * 思路:substr每次取一个子字符串进行判断 * @return */bool isPrime(int x){ if(x<=1)return false; for (int i = 2,l=sqrt(x)原创 2020-09-22 22:54:32 · 178 阅读 · 0 评论 -
PAT(甲级)2020年秋季考试 7-1 Panda and PP Milk (20分)
前言参考题解//// Created by niko on 2020/9/21.//#include <bits/stdc++.h>using namespace std;/** * 题意:熊猫喝奶 * 思路:从左往右扫描一遍,设node[0].milk=200,对于i<j,若node[j].weight>node[i].weight,则node[j].milk=node[i].milk+100,若相等,则node[j].milk=node[i].milk原创 2020-09-21 19:49:24 · 1147 阅读 · 6 评论 -
PAT(甲级)2020年秋季考试 7-3 Left-View of Binary Tree (25分)
前言参考题解//// Created by niko on 2020/9/21.//#include <bits/stdc++.h>using namespace std;/** * 题意:给定二叉树的中序和前序遍历,输出二叉树的左视图 * 思路:根据中序和前序建树后,进行层次遍历,每次输出层次遍历的第一个点 * @return */const int N = 22;vector<int> ans;int n, in[N], pre[N];//中序和前原创 2020-09-21 18:52:34 · 424 阅读 · 0 评论 -
PAT(甲级)2020年秋季考试 7-2 How Many Ways to Buy a Piece of Land (25分)
前言参考题解//// Created by niko on 2020/9/21.//#include <bits/stdc++.h>using namespace std;/** * 题意:给定n个整数,m表示顾客有多少钱,问只能连续的买下若干个岛,问有多少种购买方式,使得 * 总购买价格不超过m。 * @return */const int N=1e4+10;int a[N];int main(){ int n,m,ans=0; cin>原创 2020-09-21 18:51:01 · 333 阅读 · 0 评论 -
PAT A1018 Public Bike Management (30分)
前言传送门正文参考题解#include<iostream>#include<algorithm>#include<vector>using namespace std;/*题意:自行车站调度,给定n个点,m条边的图,边权是花费的时间,起点st是V0,终点ed是Vs,输出从V0到Vs的最短路径,同时输出需要从PBMC调度过来的自行车数量。。最后还要输出需要带回到PBMC的自行车数量。若最短路径有多条,则选择从PBMC携带的自行车数量最少的,若还有原创 2020-09-21 13:29:04 · 131 阅读 · 0 评论 -
PAT A1030 Travel Plan (30分)
前言传送门正文参考题解法一:Dijkstra#include<iostream>#include<algorithm>#include<vector>using namespace std; /*题意: n个结点,m条边,st为起点,ed为终点,给出m条边的带权信息,包括每条边的花费,以及距离。(典型的Dijkstra题,可以考虑只使用Dijkstra算法,也可以考虑使用Dijkstra+DFS,具体看自己更熟悉哪个板子了)思路:(解法一:只原创 2020-09-20 23:58:51 · 118 阅读 · 0 评论 -
PAT A1003 Emergency (25分)
前言传送门正文参考题解#include<iostream>#include<vector>#include<algorithm>using namespace std;/*题意: n个城市,m条边,每个城市的点权代表救援小队的数量,所有点权以及所有边的边权已知,求从起点到终点的最短路径的条数以及 最短路径上的点权之和。(若有多条最短路径,输出的最大的点权之和) 思路:Dijkstra算法模板,除此之外,需要额外注意求最短路径的条数,以及最大原创 2020-09-20 20:03:50 · 137 阅读 · 0 评论 -
浙江大学计算机与软件学院2019年保研上机模拟练习7-4 Index of Popularity (30分)
前言参考题解//// Created by niko on 2020/9/19.////剩余时间:19:44#include <bits/stdc++.h>using namespace std;/** * 题意:给出n个点,m条边的图,接下来进行几次查询,每次查询问由k个结点组成的子图中 * 前三个度数最高的结点编号(度数降序排序),若度数相同,则按照从小到大的顺序输出 * @return */vector<pair<int,int>>原创 2020-09-19 18:19:15 · 1300 阅读 · 0 评论 -
浙江大学计算机与软件学院2019年保研上机模拟练习 7-3 Is It An AVL Tree (25分)
前言参考题解//// Created by niko on 2020/9/19.////剩余时间:53:00#include <bits/stdc++.h>using namespace std;/** * 题意:给定一棵BST的前序遍历,判断是否是AVL树 * 思路:最后发现不要全部的avl模板函数,只要newNode,getHeight,updateHeight,getBalanceFactor,这四个模板函数即可,BST模板建树,随后进行先序遍历所有结点,判断每隔原创 2020-09-19 18:17:45 · 266 阅读 · 0 评论 -
浙江大学计算机与软件学院2019年保研上机模拟练习 7-2 Zigzag Sequence (25分)
前言参考题解//// Created by niko on 2020/9/19.////剩余时间:02:10:56#include <bits/stdc++.h>using namespace std;/** * 题意:给出n个整数,按照Z字型每行输出m个数字,从左到右,从右到左,升序输出 * 思路:先用一个vector存储所有数字,然红藕排好序,再确定输出行数row,以及已经输出 * 的数字个数cnt,随后奇数行从小到大输出,偶数行从大到小输出 * @return原创 2020-09-19 18:12:07 · 253 阅读 · 0 评论 -
浙江大学计算机与软件学院2019年保研上机模拟练习 7-1 Happy Numbers (20分)
前言参考题解//// Created by niko on 2020/9/19.////剩余时间:02:32:39#include <bits/stdc++.h>using namespace std;/** * 题意:给定n个数,判断这些数是否是Happy Number,若是,则输出其迭代次数; * 若不是,则输出第一个进入循环的数 * 思路:将每次计算的结果存储到一个vector中,若新进入vector中的数字在之前已经出现过,那么输出该数字,若该数字为1,则输出v原创 2020-09-19 18:11:00 · 281 阅读 · 0 评论 -
PAT A1107 Social Clusters (30分)
前言传送门正文参考题解#include<iostream>#include<algorithm>#include<vector>using namespace std;/*题意:社交簇,有共同爱好的人在一个团体(A和B有共同爱好,B和C有共同爱好,则ABC都在同一个团体),给出n个人各自有哪些爱好,总共有多少个团体,并且按照团体中的人数降序排序 思路:一眼看过去应该是并查集,仔细一看题目给的是每个人的爱好,本题使用并查集应该是要以人的编号为元素原创 2020-09-18 21:08:50 · 154 阅读 · 0 评论 -
PAT A1066 Root of AVL Tree (25分)
前言传送门正文参考题解#include<iostream>#include<algorithm>#include<vector>using namespace std;/*题意:给定含n个整数的序列,要求用这n个整数构建AVL树,并最终输出AVL根结点的值思路:AVL模板题,首选需要直接写出7个函数1、newNode(int data)(新建结点)、getHeight(Node* root)(获取结点为根结点的树的高度)updateHeight原创 2020-09-18 19:17:16 · 141 阅读 · 0 评论 -
PAT A1099 Build A Binary Search Tree (30分)
前言传送门正文参考题解c原创 2020-09-18 16:24:20 · 146 阅读 · 0 评论 -
PAT A1064 Complete Binary Search Tree (30分)
前言传送门正文参考题解#include<iostream>#include<algorithm>#include<vector>#include<queue>using namespace std;/*题意: 完全二叉搜索树,给出n个正整数作为结点,求根据这些结点所构成的完全二叉搜索树的层次遍历序列。思路: 首先看到BST就要想到它的中序遍历序列是从小到大排列的。故对于输出的n个数可以先进行从小到大的排序,那么此时它们就是中序遍历原创 2020-09-17 22:32:25 · 168 阅读 · 0 评论 -
PAT A1043 Is It a Binary Search Tree (25分)
前言传送门正文参考题解#include<iostream>#include<algorithm>#include<vector>#include<queue>using namespace std;/*题意: 给定一个序列,判断该序列是否是BST的前序遍历或者是BST的镜像树的前序遍历。若是,则输出相应的后序遍历序列,若不是,则输出No 思路:根据题意首先假设这个序列(存储至origin数组中)是BST的前序序列,随后进行建树,建原创 2020-09-17 21:43:22 · 107 阅读 · 0 评论 -
PAT A1053 Path of Equal Weight (30分)
前言传送门正文参考题解#include<iostream>#include<algorithm>#include<vector>#include<queue>using namespace std;/*题意: 给定一棵带点权的树,从根结点到叶结点的路径上所经过的所有的结点的点权之和,问其中与给定的常数S相等的点权之和的路径有哪些。并且按照降序输出每一条满足条件的路径。 思路:由于输出有顺序要求,可以在读入非叶结点的每个子结点后,在原创 2020-09-17 16:32:50 · 151 阅读 · 1 评论 -
PAT A1004 Counting Leaves (30分)
前言传送门正文参考题解#include<iostream>#include<algorithm>#include<vector>#include<queue>#include<unordered_map> using namespace std;/*题意: 计算每层的叶子结点的个数 思路:由于直接给出的是结点之间关系,也不需要记录点权,故可以直接使用vector<int> child[N]来记录每个非叶结点的原创 2020-09-16 20:45:04 · 110 阅读 · 0 评论 -
PAT A1106 Lowest Price in Supply Chain (25分)
前言传送门正文参考题解#include<iostream>#include<algorithm>#include<vector>#include<queue>#include<cmath>using namespace std;/*题意: 广义树,同A1079、A1090。本题是找最低的价格,以及是最低价格的结点数量。也就是找深度最低的 叶结点的数量,以及该层的价格。 思路:本题由于不需要记录点权,故可以直接使用vec原创 2020-09-16 19:45:21 · 107 阅读 · 0 评论 -
PAT A1079 Total Sales of Supply Chain (25分)
前言传送门正文参考题解原创 2020-09-16 16:58:50 · 152 阅读 · 0 评论 -
PAT A1090 Highest Price in Supply Chain (25分)
前言传送门正文参考题解#include<iostream>#include<algorithm>#include<queue> #include<vector>#include<cmath>using namespace std;/*题意: 广义树,给处一棵销售树,根结点的价格为p,每层价格相对上一层上涨r%,求最高价格,以及是最高价格的结点个数。思路: 由于不必考虑点权,故可以用vector<int> c原创 2020-09-16 15:36:57 · 107 阅读 · 0 评论 -
PAT A1102 Invert a Binary Tree (25分)
前言传送门正文参考题解#include<iostream>#include<algorithm>#include<vector>#include<queue> using namespace std;/*题意:翻转二叉树(左右结点交换位置),输出翻转后的层次遍历和中序遍历 思路:本题由于给出了结点编号之间的关系,因此使用二叉树的静态写法。注意:翻转二叉树的操作只需要在对二叉树进行后序遍历的时候,在访问根结点的时候,swap左右子结原创 2020-09-15 19:00:39 · 159 阅读 · 1 评论 -
PAT A1086 Tree Traversals Again (25分)
前言传送门正文参考题解#include<iostream>#include<algorithm>#include<vector>using namespace std;/*题意: 给定一系列栈操作来使得出栈序列是二叉树的中序遍历,要求这棵树的后序遍历思路:即给定二叉树的前序和中序遍历,求后序遍历。(入栈顺序就是前序遍历,出栈顺序就是中序遍历)。 注意:vector也可以作为模拟栈使用*/vector<int> pre,in,po原创 2020-09-15 16:56:31 · 102 阅读 · 0 评论 -
PAT A1101 Quick Sort (25分)
前言传送门正文参考题解#include<iostream>#include<algorithm>#include<vector>#include<unordered_map>using namespace std;/*题意:给定n个元素的序列,问哪些元素可以作为分界点,即满足在该元素左边的所有元素均小于它,在该元素右边的都大于它。思路:根据题意的定义可知,某个元素若可以作为分界点,那么它比大于左边序列的最大值和小于右边序列的最小值原创 2020-09-15 16:13:28 · 88 阅读 · 0 评论 -
PAT A1130 Infix Expression (25分)
前言传送门正文参考题解#include<iostream>#include<algorithm>#include<string>#include<vector>using namespace std;/*题意: 给定一棵语法二叉树,要你求这棵树所表示的中缀表达式,其实就是本树的中序遍历序列。需要注意的是要用括号表示运算的优先级思路:首选需要知道根节点root,可以用一个bool数组记录结点i是否出现,只要从1~n遍历找到某个未出现原创 2020-09-14 23:57:40 · 135 阅读 · 0 评论 -
PAT A1094 The Largest Generation (25分)
前言传送门正文原创 2020-09-14 20:07:40 · 150 阅读 · 0 评论 -
PAT A1155 Heap Paths (30分)
前言传送门正文参考题解#include<iostream>#include<algorithm>#include<vector>#include<set>#include<stack>using namespace std;/*题意: 堆路径,给定一棵完全二叉树的层次遍历序列,求其所有的从根结点到叶子结点的路径(从右子树往左子树方向)。同时判断其是否是大顶堆,小顶堆或者非堆。思路:首选需要知道完全二叉树的性质,对于结点原创 2020-09-14 16:46:07 · 128 阅读 · 0 评论 -
PAT A1153 Decode Registration Card of PAT (25分)
前言传送门正文参考题解#include<iostream>#include<algorithm>#include<vector>#include<set>#include<unordered_map>using namespace std;/*题意: 模拟题,排序 思路:首先用string存储card,因为需要特定的排序规则,故使用结构体存储考生的信息,cmp函数进行排序。在读入n个考生信息后,对于m次询问,根据每次询问原创 2020-09-14 15:41:34 · 83 阅读 · 0 评论 -
PAT A1151 LCA in a Binary Tree (30分)
前言传送门正文参考题解#include<iostream>#include<algorithm>#include<vector>#include<set>#include<unordered_map>using namespace std;/*题意: 给定一棵二叉树的中序和前序遍历序列,进行m次询问,每次询问结点u和v的lca是哪个结点(若u和v都存在) 思路:本题和PAT A1143 Lowest Common Ance原创 2020-09-13 20:35:24 · 125 阅读 · 0 评论 -
PAT A1150 Travelling Salesman Problem (25分)
前言传送门正文参考题解原创 2020-09-13 16:58:55 · 87 阅读 · 0 评论 -
PAT A1147 Heaps (30分)
前言传送门正文参考题解#include<iostream>#include<algorithm>#include<vector>using namespace std;/*题意:判断给定的一棵完全二叉树是否是堆。给定m个含n个结点的完全二叉树的层次遍历序列。要求输出m棵树的后序遍历序列,并且判断是否是堆,以及是大顶堆还是小顶堆 思路: 完全二叉树的性质,对结点i,它的左子树根节点为2*i,右子树根节点为2*i+1。(i为数组下标,且从1开始原创 2020-09-12 16:33:20 · 157 阅读 · 4 评论 -
PAT A1146 Topological Order (25分)
前言传送门正文参考题解原创 2020-09-12 14:29:43 · 98 阅读 · 0 评论 -
PAT A1143 Lowest Common Ancestor (30分)
前言传送门正文参考题解原创 2020-09-11 11:24:29 · 336 阅读 · 0 评论 -
PAT A1142 Maximal Clique (25分)
前言传送门正文参考题解#include<iostream>#include<algorithm>#include<vector>using namespace std;/*题意: clique是一个无向图的点的子集,它满足clique中的每个点都和其他点相邻,而maximal clique则是极大的clique,即随便再加无向图中的任意一个点,都不能使得其继续保持clique。题意就是给出一个无向图,以及m组查询,每组查询要我们判断k个点的点集是原创 2020-09-09 20:42:17 · 128 阅读 · 0 评论 -
PAT A1141 PAT Ranking of Institutions (25分)
前言传送门正文参考题解#include<iostream>#include<algorithm>#include<unordered_map>#include<vector>using namespace std;/*题意: 每次PAT考试完后都会公布各个学校的排名,给出每个考生的id,得分score,学校school, 题意要求我们输出各个学校的排。 思路:首先考虑到是要按照总的加权分tws,总的参赛人数ns和学校代码来对输出进行排序原创 2020-09-09 19:27:35 · 138 阅读 · 1 评论 -
PAT A1139 First Contact (30分)
前言传送门正文参考题解#include<iostream>#include<algorithm>#include<string>#include<vector>#include<unordered_map>#include<cmath> using namespace std;/*题意:男女交友真就麻烦!男生A若迷恋女生B,则A会联系他的基友C,要C去联系B的闺蜜D,要D传话给B...本题就是给出n个点,每个原创 2020-09-09 17:09:05 · 216 阅读 · 0 评论 -
PAT A1138 Postorder Traversal (25分)
前言传送门正文参考题解#include<iostream>#include<algorithm>using namespace std;/*题意: 给定一棵二叉树的前序和中序序列,要你输出后续序列的第一个结点值思路:水题,直接前序和中序序列建树,再后序遍历即可,注意只输出第一个结点值 注意:此题加了cin.tie(0)优化还是会有测试点超时,故最好采用scanf和printf */const int N=5e4+10;int pre[N],in[N];//原创 2020-09-09 15:28:12 · 121 阅读 · 0 评论