2019秋季PAT甲级_C++题解】的更多相关文章

2019 秋季 PAT (Advanced Level) C++题解 考试拿到了满分但受考场状态和知识水平所限可能方法不够简洁,此处保留记录,仍需多加学习.备考总结(笔记目录)在这里 7-1 Forever (20 分) "Forever number" is a positive integer A with K digits, satisfying the following constrains: the sum of all the digits of A is m; the…
2019 秋季 PAT 甲级 备考总结 在 2019/9/8 的 PAT 甲级考试中拿到了满分,考试题目的C++题解记录在这里,此处对备考过程和考试情况做一个总结.如果我的方法能帮助到碰巧点进来的有缘人那就更好了Orz 目录 一.备考内容 1.  <算法笔记>(←阅读内容目录在这里) 2. PAT 题库刷题 3. 题型总结 + 刷题笔记 (←笔记目录在这里) 二.考试情况 1. 考前准备 2. 考试过程 3. 对这次考试的总结(碎碎念,可忽略) 一.备考内容 1.  <算法笔记>…
题目分析: 本题我第一次尝试去做的时候用的是优先队列,但是效率不仅代码量很大,而且还有测试样例过不去,很显然没有找到一个好的数据结构来解决这道题目(随着逐渐的刷PAT甲级的题会发现有时选择一个好的解题方向真的比一些花里胡哨的技巧重要的多),对于本题,我们需要模拟的是一个去银行接受服务的过程,银行有k个窗口,而在8点开门之前所有到达的人都在门外排队(在8点后到达的人如果有人则需要排队,窗口中有空位则会选择最空闲的进行自己的服务),首先我们需要对n个用户按照到达的时间进行排序,然后建立一个windo…
题目分析: 本题计算过程简单,但翻译令我迷茫:题意读清楚很重要(反正我是懵逼了)对于一个10进制的数,如果它是一个素数,把它转换成d进制,再将这个序列逆序排,这个逆序的d进制数的10进制表示如果也是素数,则输出Yes,否则No #include<iostream> #include<cmath> using namespace std; ]; //存放n转换成的d进制数的每一位 int cnt; //存放d进制的位数 bool isPrime(int x){ ) return fa…
题目分析: 本题初步浏览题目就知道是并查集的模板题,数据输入范围N为1~1000,则M的范围为0~1000^2,通过结构体记录每一对连线的关系,p[]数组记录每个节点的跟,对于k次查询,每次都要重新维护p[]数组,而每次的区别在于都要排除被占领的节点重新维护p[]数组的节点的链接关系,而最终的答案就是集合数-2(占领点一定是单独的集合,n个集合需要n-1条边就能相连) #include<iostream> using namespace std; struct Node{ int from;…
题目分析: 本题的算法并不复杂,主要是要搞清楚数据的存储方式(选择一种合适的方式存储每个学生的四个成绩很重要)这里由于N的范围为10^6,故选择结构体来存放对应下标为学生的id(N只有2000的范围,所以结构体开10^6其实有点浪费空间),再者对于每个学生的每种成绩的排名我们通过下面的这种方式可以巧妙得到(而且单科成绩是会出现重复的,即并列的情况): 获取排名的方法:其实很简单,由于会出现并列单科成绩的方式,且单个学生的成绩是存储在结构体里的,通过多次排序的方式去解决这道题目是不太合适的,这里用…
题目分析:本题开始一直在考虑如何将每一个节点通过一种合适的数据结构存储起来(一对多的关系),最后发现借助并查集的思想可以用一个数组p,p[i]存放i节点的父节点,每次查询编号为i的节点属于第几层且判断是否有以该点位父元素的节点(判断该点是否为叶子节点,是则floor[对应层数]++)由于本题的图不存在环路,则借助这个p数组则能十分巧妙将整棵树存储下来,本题还借助了vis[]数组存放某个节点是否出现过(因为N个节点并不一定是有序出现的),mat数组存放下标为i时是否是叶子节点,floor[]数组i…
题目分析:对于每一个点来说,如果选择合并入包含前一个点的序列那么只有在前一个点的序列不为负数(这里指的是包含前一个位置的数的一个连续序列的和不为负数),当前点才会将自己也加入这个子序列,否则,当前点则会以自身为起点作为子序列的开始(这里的贪心的思维是每个点尽可能的使得自己所融入的连续子序列的和一定是至少大于等于自身的,只要包含前一个点的子序列的和大于等于0则自己就会加入),我们用结构体存储数据,包括下标为i的数的值,包含该值的最大的连续子序列的和,和开始位置(结束位置就是自己i),最后遍历一遍找…
解题步骤: 1.初始化:设置mat[][]存放点之间的距离,vis[]存放点的选取情况,people[]存放初始时每个城市的人数,man[]存放到达每个城市的救援队的最多的人数,num[]存放到达每个城市的最多的人数(在最短路径的基础之上),dist[]存放从起点开始到达每个城市的最短的路径(随着每次选取点而更新) 2.核心算法:按照Dijkstra算法思想,从起点出发,不断选择一个点使得通过该点到达其他点的距离比直接通过已知点到达的距离更短,则更新最短距离数组dist[],这里分为两种情况1:…
#define HAVE_STRUCT_TIMESPEC #include<bits/stdc++.h> using namespace std; typedef struct node{ int data; node *lchild,*rchild; }tree; ]; tree *build(int l,int r){ if(l>r) return NULL; ,pos=; for(int i=l;i<=r;++i) if(a[i]<mn) mn=a[i],pos=i;…
#define HAVE_STRUCT_TIMESPEC #include<bits/stdc++.h> using namespace std; ]; ]; ]; int main(){ ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int n,m; cin>>n>>m; ;i<=m;++i){ int x,y; cin>>x>>y; v[x].insert(y);…
#define HAVE_STRUCT_TIMESPEC #include<bits/stdc++.h> using namespace std; typedef struct{ int add,data,nex; }Node; Node node[],ans[],ans2[]; map<int,int>mp; int main(){ //ios::sync_with_stdio(false); //cin.tie(NULL); //cout.tie(NULL); int s,n,…
#define HAVE_STRUCT_TIMESPEC #include<bits/stdc++.h> using namespace std; ][]; ][]; ]; string t; int main(){ ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); ;i<=;++i) ;j<=;++j) cin>>s[i][j]; cin.ignore(); getline(cin,t); ,cnt…
PAT链表专题 关于PAT甲级的链表问题,主要内容 就是"建立链表" 所以第一步学会模拟链表,pat又不卡时间,这里用vector + 结构体,更简洁 模拟链表的普遍代码 const int maxn = 1e6+10; struct node{ int address; int next; char key; }nod[maxn]; int head1,n; vector<node> list1; cin>>head1>>n; for(int i=…
博主欢迎转载,但请给出本文链接,我尊重你,你尊重我,谢谢~http://www.cnblogs.com/chenxiwenruo/p/6102219.html特别不喜欢那些随便转载别人的原创文章又不给出链接的所以不准偷偷复制博主的博客噢~~ 时隔两年,又开始刷题啦,这篇用于PAT甲级题解,会随着不断刷题持续更新中,至于更新速度呢,嘿嘿,无法估计,不知道什么时候刷完这100多道题. 带*的是我认为比较不错的题目,其它的难点也顶多是细节处理的问题~ 做着做着,发现有些题目真的是太水了,都不想写题解了…
PAT甲级考前整理一:https://www.cnblogs.com/jlyg/p/7525244.html,主要讲了131题的易错题及坑点 PAT甲级考前整理二:https://www.cnblogs.com/jlyg/p/10364696.html,主要讲了考前注意以及一些常用算法. 1132题:用字符串接收会毕竟快,使用atoi函数转成数字,注意a*b会超出int32. #include<iostream> #include<cstdio> #include<set&g…
PAT甲级考前整理之一网址:https://www.cnblogs.com/jlyg/p/7525244.html,主要总结了前面131题的类型以及易错题及坑点. PAT甲级考前整理三网址:https://www.cnblogs.com/jlyg/p/10364727.html主要是讲132题开始的题目. 考前注意: 1.写函数(有返回值的函数)容易忘记返回值,可能本地运行没问题,但是提交了就会有问题. 2.不要把strlen()函数写到for.while的循环中,有时候会超时,最好是 int…
   转载请注明出处:https://www.cnblogs.com/jlyg/p/7525244.html 终于在考前,刷完PAT甲级131道题目,不容易!!!每天沉迷在刷题之中而不能超脱,也是一种境界.PAT甲级题目总的说卡题目的比较多,卡测试点的比较少,有些题目还会有题意混淆,这点就不吐槽了吧.静下心来耍这130道题,其实磨练的是一种态度与手感,养成的是一种习惯.热爱AC没有错!!(根据自己的刷题情况持续更新中,这次是第二遍刷了,发现换了新网站后,oj严格很多了,有些之前可以过的,现在已经…
一次考试经历 今天是"大雪",很冷. 来到隔壁的学校考试,记得上一次来河中医是两年前大一刚开学吧,那天晚上印象比较深刻,6个室友骑车到处闲逛.当时还不会Hello world. 很巧,遇到了一年前在网络上一起准备蓝桥杯的小伙伴,考前,相约明年再来考一次..然而,下次可能不会再来了. A题:字符串处理 B题:模拟链表 C题:图论,简单的邻接矩阵判断顶点相连 D题:小根堆,给出中序序列建树,输出层序遍历的序列. 除了第一题以外,其他三题都和往年的题型一样的. 第一题字符串看起来就比较难处理…
时间轴: 2017年,数据结构加入了我的课程清单. 2018年12月,我从网易云课堂下载了数据结构的所有课程视频(学校里没有网,只能离线看),开始一刷.一刷只看了视频,基本没有做题,看到AVL树的时候已经懵了,后来不了了之. 2019年7月,我开始二刷数据结构.事实证明不写代码一刷是没有用的,到后面完全不记得以前看过.这次我跟着进度来,每个算法都造轮子,每道题都做.我开始上PAT平台刷题,DSA题集的数据结构部分刷完以后,就开始刷甲级题,觉得难度适中,决定参加PAT甲级考试. 2019年8月,我…
今天开个坑,分类整理PAT甲级题目(https://pintia.cn/problem-sets/994805342720868352/problems/type/7)中1051~1100部分.语言是modern C++. 为什么要整理呢,因为我2019年9月要考PAT甲级,虽然是第一次考,虽然只学了数据结构(https://mooc.study.163.com/course/1000033001?tid=2402970002#/info),但我要冲着高分(2019年9月8日更新:满分)去. 下…
目录 题目介绍 题解 解题思路 代码 参考链接 题目介绍 题目链接 https://pintia.cn/problem-sets/994805342720868352/problems/994805419468242944 题目考点 队列.模拟.重点在模拟,队列只用到了建立.入队.出队.清空(需要自己实现,创建新的队列然后赋值或者swap). 题目难度 PAT甲级25分 题目大意 给定1个图,每个玩家控制1只老鼠移动,每个老鼠的目标是尽可能多地吃大米变成Fat Mouse. \(N_P\)个玩家…
PAT甲级1131. Subway Map 题意: 在大城市,地铁系统对访客总是看起来很复杂.给你一些感觉,下图显示了北京地铁的地图.现在你应该帮助人们掌握你的电脑技能!鉴于您的用户的起始位置,您的任务是找到他/她目的地的最快方式. 输入规格: 每个输入文件包含一个测试用例.对于每种情况,第一行包含正整数N(<= 100),地铁线数.然后N行跟随,第i(i = 1,...,N)行以格式描述第i条地铁线: M S [1] S [2] ... S [M] 其中M(<= 100)是停止次数,S [i…
PAT甲级1127. ZigZagging on a Tree 题意: 假设二叉树中的所有键都是不同的正整数.一个唯一的二叉树可以通过给定的一对后序和顺序遍历序列来确定.这是一个简单的标准程序,可以按顺序打印数字.但是,如果您认为问题太简单,那么您太天真了. 这次你应该以"锯齿形顺序"打印数字 - 也就是说,从根开始,逐级打印数字,从左到右交替,从右到左.例如,对于以下树,您必须输出:1 11 5 8 17 12 20 15. 输入规格: 每个输入文件包含一个测试用例.对于每种情况,第…
PAT甲级1123. Is It a Complete AVL Tree 题意: 在AVL树中,任何节点的两个子树的高度最多有一个;如果在任何时候它们不同于一个,则重新平衡来恢复此属性.图1-4说明了旋转规则. 现在给出一系列插入, 您应该输出生成的AVL树的级别遍历序列,并告知它是否是完整的二叉树. 输入规格: 每个输入文件包含一个测试用例.对于每种情况,第一行包含正整数N(<= 20). 一行中的所有数字都以空格分隔. 输出规格: 对于每个测试用例,将键逐个插入到初始空的AVL树中.然后首先…
PAT甲级1119. Pre- and Post-order Traversals 题意: 假设二叉树中的所有键都是不同的正整数.一个唯一的二进制树可以通过给定的一对后序和顺序遍历序列来确定,也可以通过预序和顺序遍历序列来确定.然而,如果仅给出了后序和预序遍历序列,则相应的树可能不再是唯一的. 现在给出一对postorder和preorder遍历序列,你应该输出树的相应的顺序遍历序列.如果树不是唯一的,只需输出任何一个树. 输入规格: 每个输入文件包含一个测试用例.对于每种情况,第一行给出正整数…
PAT甲级1114. Family Property 题意: 这一次,你应该帮我们收集家族财产的数据.鉴于每个人的家庭成员和他/她自己的名字的房地产(房产)信息,我们需要知道每个家庭的规模,以及他们的房地产的平均面积和数量. 输入规格: 每个输入文件包含一个测试用例.对于每种情况, 第一行给出正整数N(<= 1000).然后N行跟随,每个给出一个拥有庄园的人的信息,格式如下: ID父亲母亲k Child1 ... Childk M_estate Area 其中ID是每个人唯一的4位数识别号码;父…
PAT甲级1111. Online Map 题意: 输入我们当前的位置和目的地,一个在线地图可以推荐几条路径.现在你的工作是向你的用户推荐两条路径:一条是最短的,另一条是最快的.确保任何请求存在路径. 输入规格: 每个输入文件包含一个测试用例.对于每种情况, 第一行给出两个正整数N(2 <= N <= 500),M分别是地图上街道交叉路口的总数和街道数.然后M行跟随,每个描述一个街道的格式: V1 V2单程长度时间 其中V1和V2是街道两端的索引(从0到N-1);一- 方式是1,如果街道从V1…
PAT甲级1107. Social Clusters 题意: 当在社交网络上注册时,您总是被要求指定您的爱好,以便找到一些具有相同兴趣的潜在朋友.一个"社会群体"是一群拥有一些共同兴趣的人.你应该找到所有的集群. 输入规格: 每个输入文件包含一个测试用例.对于每个测试用例, 第一行包含一个正整数N(<= 1000),一个社交网络中的总人数.因此,人数从1到N.然后N行跟随,每个给出一个人的爱好列表的格式: Ki:hi [1] hi [2] ... hi [Ki] 其中Ki(>…
PAT甲级1103. Integer Factorization 题意: 正整数N的K-P分解是将N写入K个正整数的P次幂的和.你应该写一个程序来找到任何正整数N,K和P的N的K-P分解. 输入规格: 每个输入文件包含一个测试用例,它给出一行三个正整数N(<= 400), K(<= N)和P(1 <P <= 7).一行中的数字用空格分隔. 输出规格: 对于每种情况,如果解决方案存在,输出格式如下: N = n1 ^ P + ... nK ^ P 其中ni(i = 1,... K)是…