PAT习题
虚境
这个作者很懒,什么都没留下…
展开
-
PAT A 甲级 1068 Find More Coins (30分)
1068 Find More Coins (30分)杂谈今天才意识到,莫非Eva这个角色是neta《WALL·E》(《瓦力》)那个?思路首先提一嘴,我的算法是“略微聪明的枚举”,不是这道题实际考查的动态规划、背包问题。因为看了那个m<=100以及这个怎么看都只要直接返回枚举找到的第一个答案的情况……感觉没必要。然后……就枚举嘛。递归+循环枚举。看上去很复杂度很高,实际用时都在1...原创 2020-03-01 23:35:08 · 196 阅读 · 0 评论 -
PAT A 甲级 1067 Sort with Swap(0, i) (25分)
1067 Sort with Swap(0, i) (25分)杂谈对4错2后花了很多时间debug结果发现其实问题在一个低级错误。好气。思路首先得搞懂要得到最小值该怎么操作。正确的操作方式是:①如果0不在0位,那把它和该在它现在在的位置的数交换。这个操作每次能且只能让一个0以外的数归位。②这样操作一定次数之后,0必然会回到0位。③此时,如果还有数没有归位,那么0寻找一个没有被归位的...原创 2020-03-01 22:01:10 · 145 阅读 · 0 评论 -
PAT A 甲级 1065 A+B and C (64bit) (20分)
1065 A+B and C (64bit) (20分)思路这道题的难点并不只是相加可能导致数据数据溢出。更重要的是,提供的输入范围里,263根本就不在long long的范围内。long long的范围是到263-1。也就是说,从保存输入这一步开始,就已经只能用string类型了。但是和C++不同,python3的int是无上限的(微笑)。当然啦,C++也是可以做这道题的,只不过大概得...原创 2020-02-29 21:20:39 · 123 阅读 · 0 评论 -
PAT A 甲级 1011 World Cup Betting (20分)
1011 World Cup Betting (20分)杂谈又是看题时间和做题时间差不多长的题目。题意三场比赛,每场三种结果,每种一个赔率,找出每场最大的,以(abc*65%-1)*2求出结果。思路不思路了。题意和怎么做根本一个意思。代码#include<iostream>using namespace std;int main(){ double o = ...原创 2020-02-28 22:19:19 · 183 阅读 · 0 评论 -
PAT A 甲级 1064 Complete Binary Search Tree (30分)
1064 Complete Binary Search Tree (30分)杂谈二叉树日常炸脑子。说实话,完全二叉搜索树也许是最容易建立的搜索树了——因为它对于一个数字集合而言是唯一的。对于一个有序序列,完全可以通过计算直接确定一个节点的子节点。但需要人动脑子的“计算“就是最麻烦的了。思路如上所述,将所有输入数字排序,然后通过计算得出这颗树。对于一个有序序列,假定其数字总数为X,且假...原创 2020-02-28 21:48:59 · 102 阅读 · 0 评论 -
PAT A 甲级 1063 Set Similarity (25分)
1063 Set Similarity (25分)吐槽我很怀疑这题没有别的解法了。感觉即使动了脑子最多也就“完成了STL内程序干的事”。虽然N<=50让我想到了用一个东西保存所有set对某一个数的有/没有的解法——实际操作起来大概还挺麻烦的。我做到了。思路思路1:unordered_set使用教程。用unordered_set保存,计算重合度时建立新的unordered_set...原创 2020-02-28 20:38:51 · 162 阅读 · 0 评论 -
PAT A 甲级 1062 Talent and Virtue (25分)
1062 Talent and Virtue (25分)吐槽又是个描述看半天的题目。以及题面中居然出现了中文了!说起来我一开始还纠结了一会儿是不是错把司马迁打成司马光了,结果司马光还真是史学家,甚至是《资治通鉴》的主编……我就记得他和王安石扯皮了。思路直接搞四个vector,保存不同的人,然后都sort一次。也没啥好多说的。当然cin和cout要改scanf和printf不然会超时。...原创 2020-02-26 23:02:46 · 105 阅读 · 0 评论 -
PAT A 甲级 1061 Dating (20分)
1061 Dating (20分)吐槽怎么会有这么从各种意义上都糟糕透顶了的题目的?????不仅题面又臭又长又难懂而且条件描写模糊不清或者起码让人不敢确定甚至题目内容还充满了不得不大量if+switch七个case的情况而其本质却是个毫无难度、没有上面这堆鬼情况一分钟就能写完的比对字符串内字母?我人傻了。思路这道题……本质是个字符比对。我不特别确定它的题意(指具体是什么样的比对...原创 2020-02-26 21:45:22 · 177 阅读 · 0 评论 -
PAT A 甲级 1059 Prime Factors (25分)
1059 Prime Factors (25分)吐槽你的题目叫我把它分解成质数!质数因子!为啥里面会有个1=1啦?前几道题刚告诉过我1不是质数啊喂!思路这道题其实不需要找出所有质数因子。只要从小到大每找到一个因数就除一下就行,得到的必然都是质数。当你把所有3都除去之后,得到的数必然不是3的倍数的倍数了,所以没关系的。注意测点3。这玩意儿是1=1。代码#include<iostr...原创 2020-02-26 21:02:20 · 101 阅读 · 0 评论 -
PAT A 甲级 1058 A+B in Hogwarts (20分)
1058 A+B in Hogwarts (20分)吐槽完全不记得有这么个货币制度。以及用特殊的方法解特殊的题目描述。没想到吧我也学了python!思路思啥路啊这题做不出的基本告别PAT了。代码(python)lst=input().split()a=lst[0].split('.')b=lst[1].split('.')c=[]for i in range(3): ...原创 2020-02-26 20:01:10 · 110 阅读 · 0 评论 -
PAT A 甲级 1015 Reversible Primes (20分)
1015 Reversible Primes (20分)吐槽说实话做之前我真不确定0和1是不是质数。以及这道题居然是“以负数输入为结束”而不是一贯的先给个说明之后要输入几次的n!这一点都不PAT!思路没啥好说的。一个判断是不是质数的函数、一个进制转化的部分,都是基础操作。唯一要特别注意的是1和0不是质数。(测点1)而且这句特判必须写在判断的函数里,而不是直接判断输入的n是不是0或1,...原创 2020-02-25 17:15:32 · 111 阅读 · 0 评论 -
PAT A 甲级 1033 To Fill or Not to Fill (25分)
1033 To Fill or Not to Fill (25分)吐槽花了好一会儿才反应过来tank是油箱不是坦克。还以为又battle over cities了。然后这题目很憨。这测点更憨。当然最憨的还是花了这么久才解决这道题的我。思路首先到不了的那种情况,很好处理,只要从距离0的站开始第一次发现两相邻站距离大于满油就输出该站距离+满油箱可走长度即可(测点2坑警告,见之后测点部分)。...原创 2020-02-24 23:16:37 · 140 阅读 · 0 评论 -
PAT A 甲级 1032 Sharing (25分)
1032 Sharing (25分)吐槽你值25分?(困惑)思路5位地址,话不多说直接100000大小数组走起。然后输入完之后从两个头节点分别跑一次,第一次把跑到的点全部标记,第二次跑到标记点就输出即可。代码#include<iostream>using namespace std;struct { bool used = false; int next = ...原创 2020-02-24 20:17:49 · 119 阅读 · 0 评论 -
PAT A 甲级 1057 Stack (30分)
1057 Stack (30分)吐槽……这题让我找回了刚开始练pat、STL都还不会用的阶段——总是报各种各样的错误而完全没有修改的头绪。思路先提一嘴scanf的事。这道题其实用cin时间也是够的,只不过会从50ms左右变成200+。总之不是必需。然后是主干。这道题非常容易超时。非常。如果真的用vector保存数字,然后每次找中位数时都真的去找一下,又或者用两种sort方式分别处理p...原创 2020-02-22 23:43:54 · 199 阅读 · 0 评论 -
PAT A 甲级 1056 Mice and Rice (25分)
1056 Mice and Rice (25分)题意重点就是第三行。以示例为例,第三行的内容分析一下是“ID6号、0号、8号分别在第1、2、3位,他们三位在第一局中互相对决”。思路用了两个保存指针的vetor,方便一边削减vector内容(也就是模拟淘汰)一边记录名次。然后就是模拟淘汰赛——每只鼠和当前同组最重鼠比较,留下胜者并给败者赋rank、erase败者,重复这个操作到只剩一只鼠。...原创 2020-02-22 20:57:49 · 130 阅读 · 0 评论 -
PAT A 甲级 1055 The World's Richest (25分)
1055 The World’s Richest (25分)吐槽又是试了两种办法。然后才知道为啥有两个超时测点。我这两个方法擅长的测点正好不同。思路试了两种办法,一个测点1概率过测点2必过,另一个测点1必过测点2一直不过。前者是一次排序,然后每次遍历所有人找出相应数量的符合年龄大小的人。后者是先将所有人按年龄排序,然后每次找出那个年龄区间内的人(它们是相邻的),按worth排序/放进新...原创 2020-02-22 20:15:54 · 165 阅读 · 0 评论 -
PAT A 甲级 1054 The Dominant Color (20分)
1054 The Dominant Color (20分)吐槽说实话,我确信我的这个算法不能真正完美解决这个问题。我能简单地想到一个会导致它失效的极端数据。但是题目通过了。果然没有过分到使用那种情况(点头)。(但是我还是回头去搞出了这道题的完美算法hhhhh)以及果然cin改scanf是保留项目。思路看到题目的那一刻就明白肯定是个用时极限的题目。即使我认定自己的方法已经大幅缩减了题干用...原创 2020-02-22 19:00:42 · 114 阅读 · 0 评论 -
PAT A 甲级 1052 Linked List Sorting (25分)
1052 Linked List Sorting (25分)吐槽我最怕的就是用时极限的题目。不仅难想,而且凡改必大改,极度耗时。思路本题的主干部分非常简单,就是个排序。重点是超时问题以及大量没有明说的测点问题。先说明测点问题,因为超时问题中有一部分是测点导致的。首先,仅从题目来看,input中的“next”似乎是没用的——反正后面也要按key重新排序。然而实际上,这是有用的——有些数据...原创 2020-02-21 23:16:27 · 109 阅读 · 0 评论 -
PAT A 甲级 1053 Path of Equal Weight (30分)
1053 Path of Equal Weight (30分)吐槽这什么莫名其妙的输出排序要求啊喂!我实现这个排序的用时比完成题目主干内容还长……题意有一棵树,每个节点有重量(或者其实是“权值”?),从根到一个叶称作一条路径,路径的重量为路径上各节点重量之和,求所有重量为要求值的路径并将他们按同层节点重量的从大到小排列思路其实感觉题目没什么难度啊。因为每条路径是从根到叶,而每个节点的父...原创 2020-02-21 21:59:29 · 210 阅读 · 0 评论 -
PAT A 甲级 1051 Pop Sequence (25分)
1051 Pop Sequence (25分)思路本质上来说,数字push进栈的先后顺序必然是从1到N,区别在于这个过程中哪些位置插入了pop操作——而这个操作的时机是可以由得到的pop序列反推出的。所以,只要用给的这个序列尝试反推操作就可以了。先向一个空栈中push一个1,当输入一个数时,将它与栈顶比较:如果栈顶与之相同,则pop栈顶并处理下一个输入数如果栈顶与之不同,意味着此时还...原创 2020-02-21 20:58:55 · 195 阅读 · 0 评论 -
PAT A 甲级 1050 String Subtraction (20分)
1050 String Subtraction (20分)思路这题也没什么好说的,用getline和find就能简单解决问题了。虽然我对于string有insert却没有remove还是蛮困惑的。顺带一提测点2的s2里面似乎有大量非字母字符,其中包括空格。代码#include<iostream>#include<string>using namespace ...原创 2020-02-13 17:39:08 · 98 阅读 · 0 评论 -
PAT A 甲级 1049 Counting Ones (30分)
1049 Counting Ones (30分)思路完全的数学题。看到N的取值的那刻我就放弃用枚举手段了,所以也没有验证会不会超时。大概是会的,不然这题也太没难度了。言归正传。这道题的重点是找到一个计算方法。方法正确的话,步数会下降到可以人类手算的程度——换句话说就是可以忽略不计(迫真奥数题)。那么,怎么统计呢?作为举例,假设这个数是9位数,也就是xab cde fgh。很显然,对于...原创 2020-02-12 16:24:06 · 140 阅读 · 0 评论 -
PAT A 甲级 1048 Find Coins (25分)
1048 Find Coins (25分)吐槽从头文件里强行摸出了自己没背住的结构名字。还行还行。思路看上去有超时风险。大概吧。总之我用的是set。自排序+find函数,简直不能更适合。注意:测点2中出现了所求结果是两个同值的硬币的情况。由于set不保存重复数字,所以需要用multiset。同时,find函数只能找到第一个所求解,所幸排序了之后如果有同值硬币,那所find的位置的下一...原创 2020-02-08 17:09:25 · 253 阅读 · 0 评论 -
PAT A 甲级 1047 Student List for Course (25分)
1047 Student List for Course (25分)吐槽初见:哎呀小老弟?你看起来有点眼熟啊?是不是有个兄弟叫1039啊?你好像看起来还不如他嘛?写完:嗯,果然不如嘛。提交:测点3超时?稍作修改后提交:测点3内存超限?????小老弟你不对劲啊!思路讲真题目思路没啥好说的,重点在于鬼畜的用时和内存。我一开始用的自增队列保存一个课程中的学生名字,超时后觉得可以在对学生...原创 2020-02-08 16:41:48 · 179 阅读 · 1 评论 -
PAT A 甲级 1046 Shortest Distance (20分)
1046 Shortest Distance (20分)吐槽看题目第一眼以为是图论,下一秒又想到20分怎么可能是图论。果然不是。几分钟简简单单写完了程序……然后运行超时(微笑)。思路这题的唯一问题是,如果每次都老老实实把两个exit之间的各点长度加起来的话,测点2会报运行超时。解决方法也很简单,一次性累加、保存所有点到点1的距离(从两个方向走的长度都保存下来),之后对任意两点就可以靠...原创 2020-02-08 15:25:54 · 153 阅读 · 1 评论 -
PAT A 甲级 1045 Favorite Color Stripe (30分)
1045 Favorite Color Stripe (30分)吐槽说实话用时极限的题在考试的时候都蛮可怕的。毕竟如果不通过基本得从整个思路上大改。不过这题我的代码最后出来的结果蛮让我惊讶的——实际用时都看不出来这是个用时紧张的题了。思路如前所述,这是个用时极限的题。关键在于找到一个高效的计算方式。让我们把题目换一种说法——有一堆数字(节点),有一些后可以跟上另一些(单向桥梁),问一个纳...原创 2020-02-06 19:59:16 · 143 阅读 · 0 评论 -
PAT A 甲级 1044 Shopping in Mars (25分)
1044 Shopping in Mars (25分)吐槽怎么又是火星人?你们比小明还事多。思路逻辑蛮简单的,成块找可行的组合就行。用遍历的话,一个循环遍历头,里面套一个循环遍历尾,判断这个头尾能不能行,复杂度O(n2)。然而超时。不过解决方法也还算简单。先找到以1为头的第一个可行组合,然后移到2为头时判断去掉1是否还够大,够则成为新方法,不够则把尾往后移到够大,然后判断和已有的最小支...原创 2020-02-04 16:35:00 · 291 阅读 · 0 评论 -
PAT A 甲级 1043 Is It a Binary Search Tree (25分)
1043 Is It a Binary Search Tree (25分)吐槽……感觉二叉树是甲级里最难的一类题了……比图论还难。要变通和自己思考逻辑的部分实在太多了。思路首先这道题是“非常规”的,这题不是“这个二叉树是不是搜索树”,而是“这遍历有没有可能是某个搜索树的先序遍历”。正常情况下需要两种遍历才能确立一棵二叉树,但这道题却只给了一种遍历。不过,“二叉搜索树”本身是有条件的,正是...原创 2020-02-04 15:29:08 · 155 阅读 · 0 评论 -
PAT A 甲级 1042 Shuffling Machine (20分)
1042 Shuffling Machine (20分)吐槽女友的悲鸣:洗牌哪有一次一起洗还定点的啊!它没告诉我我还以为是一张张洗的根本看不明白规律啊!思路唯一可能的纠结点大概就是这洗牌到底怎么洗的吧。例:{4,1,3,5,2,6}第一个数字4的意思是洗完之后洗前的第一张牌洗完后成了第四张牌。代码#include<iostream>#include<string...原创 2020-02-02 22:56:36 · 112 阅读 · 0 评论 -
PAT A 甲级 1041 Be Unique (20分)
1041 Be Unique (20分)吐槽简单题。没啥多说的,贴代码了事。代码#include<iostream>#include<queue>using namespace std;int main(){ int n; cin >> n; int num[10000]{ 0 }; int i; queue<int> ...原创 2020-02-02 22:27:10 · 76 阅读 · 0 评论 -
PAT A 甲级 1040 Longest Symmetric String (25分)
1040 Longest Symmetric String (25分)思路、测点没啥好说的,就是把字符串倒一下然后遍历寻找就行。耗时完全够。不过有一点提示一下,回文不能用“原字符串和倒转后字符串中是否有相同的字符串”来检测。那样会使形如123456321的也被认为带有回文。测点3和5都有这一点。然后测点4、5的答案都是“1”。代码#include<iostream>#in...原创 2020-02-02 21:51:33 · 261 阅读 · 0 评论 -
PAT A 甲级 1039 Course List for Student (25分)
1039 Course List for Student (25分)吐槽PAT编程常识:所有运行时间紧张的题目都要多提交几次碰碰随机数据的运气。思路显然这道题最大问题的就是运行时间非常紧张。最大2500*200条数据要对应到40000个人上,这是无论如何改进都不可能逃脱的操作,使用遍历去完成这件事(不管是在输入时还是中间处理还是输出时)明显是会超时的。也就是说——只能在存储方式上下功夫,...原创 2020-02-02 21:06:38 · 188 阅读 · 0 评论 -
PAT A 甲级 1038 Recover the Smallest Number (30分)
1038 Recover the Smallest Number (30分)吐槽原本以为是个复杂的数学问题,结果……嗯。看逻辑部分你就懂了。逻辑做这道题很重要的是搞懂它的数学逻辑:什么样的数应该排在前面?毫无疑问,对于存在某一位不同的两数,答案是显而易见的——最早的不同的那一位比较小的应该在前。事实上,C++中string函数本来也就是这么排序的。问题就是:诸如32、321、3214这...原创 2020-02-01 17:19:12 · 110 阅读 · 0 评论 -
PAT A 甲级 1037 Magic Coupon (25分)
1037 Magic Coupon (25分)吐槽这题目是真的难懂。读题时间和编程时间可能是一个级别的。逻辑先搞清楚这题目要干啥:有一堆coupon,是一堆数,有正有负。有一堆product,是一堆数,有正有负。两堆里面各拿出一个,数字乘一乘,就是你的所得。重复各拿一个相乘的操作,直到你主动停止(即:可以不用光所有数)。问怎么拿得到的所得最多,并求这个最大所得。这里需要一个简单...原创 2020-02-01 16:05:56 · 134 阅读 · 0 评论 -
PAT A 甲级 1036 Boys vs Girls (25分)
1036 Boys vs Girls (25分)吐槽英语不够好又不好好看题的结果就是把Absent错当成了表示“有缺失”的而不是“该行缺失”的。顺带一提这么一说的话测点2(第3个测点)应该是没有男生。逻辑用两个vector分别保存男生和女生的数据,然后用两个不同的cmp函数sort然后输出front即可。、题目This time you are asked to tell the di...原创 2020-02-01 15:33:48 · 253 阅读 · 0 评论 -
PAT A 甲级 1035 Password (20分)
1036 Boys vs Girls (25分)吐槽我的VS中l和1是真的长得一模一样啊。要不是这题简单不用回头改代码,不然我怀疑自己会因为搞不清哪一段是关于l的哪一段是关于1的出错几次。思路C++的string里有快乐find函数,直接对四个字符循环搜索找到要替换的替换就行。题目This time you are asked to tell the difference betwee...原创 2020-02-01 15:08:39 · 270 阅读 · 0 评论 -
PAT A 1060 Are They Equal (25分)
1060 Are They Equal (25分)吐槽这个测点要求是真的坑……要自己猜出来的测点要求好多啊……而且很容易出现“嗯?这次改完了换了一个出错?”的情况……测点坑有以下几个题目里面并没有说的很清楚的情况:①前头可能会有无意义0(000523.5这种)②位数不到保留位的要补全③小于1的数的处理n=5 0000.00023→0.2300010^-300.00→...原创 2019-12-06 23:52:50 · 181 阅读 · 0 评论 -
PAT A 1031 Hello World for U (20分)
1031 Hello World for U (20分)吐槽这个条件描述方式是真的好复杂……明明很简单的事愣是让我绕了好一会儿……逻辑搞懂输出格式就行。简单点说就是三边尽可能等长,然后不能等长时底边比另两边大就行。坑点测点二大概是6个字符?一开始想着“既然n2>=3那么n+2小于9时设定n2=3就好啦!”……然后就测点二报错了……6个字符时应该n2=4的……题目Given a...原创 2019-12-06 22:40:46 · 100 阅读 · 0 评论 -
PAT A 1030 Travel Plan (30分)
1030 Travel Plan (30分)吐槽同样是30分的图题,这题可比1018简单多了。简单套一个Dijkstra就解决了。逻辑Dijkstra。没啥别的了。除了我由于自身喜好(和我的参考书相比)魔改了数据存储方法改用struct city . vector< struct road >什么的。题目A traveler’s map gives the distance...原创 2019-12-06 18:25:01 · 181 阅读 · 0 评论 -
PAT A 1029 Median (25分)
1029 Median (25分)吐槽这题目……嗯。逼着我不让我用set和priority_queue啊……还有就是这题大家交一遍程序的用时都太长啦!要等好久啊!(虽然我也是)逻辑用vector存储,然后用sort排序。不能使用set和priority_queue。反正我一直超时。原因应该是每次读入进去就做一次排序的开销,对于这个输入时就一半有序的输入来说,远高于最后做一次排序。...原创 2019-12-06 17:31:10 · 104 阅读 · 0 评论