![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
PAT甲级
记录PAT甲级做题过程
一条自私的鱼
这个人菜死了……
展开
-
PAT甲级1013 Battle Over Cities
这道题首先给我们一个图,然后让我们求把图中的某个点去掉之后,剩下的点至少还需要恢复几条路才可以成为连通图,我们把去掉那个点之后,每一个连通的那一部分当成一个点,也就是一个连通分量,问题就变成了剩下的n个点,恢复几条边能使他们连通,只需要n-1条边即可。任何连通图的连通分量只有一个,即是其自身,非连通的无向图有多个连通分量。简单来说就是如果一个图任何一点都可以到达,那么这个图就是连通图,连通图只有一个连通分量,而对于不是连通图的图来说,有几部分就是几个连通分量。首先解释一下连通分量。原创 2023-03-01 00:14:25 · 118 阅读 · 0 评论 -
PAT甲级1012 The Best Rank
平均数需要用四舍五入,我这里使用了增加0.5然后强制类型转化为int这种方法,lrk存储的是每个学生的最好排名,我们要输出的就是这个最好排名,然后按照优先级依次用A C M E跟这个比较, 相等的话直接输出即可。我使用了map充当学号和id的映射,输入学号mp可以直接得出这个人的id,排四遍序之后现在的序列已经乱了,所以我们需要再用id排一次。如果有相同分数的情况下我们是这样排序的,1 1 3 4 5而不是1 1 2 3 4,把排名判一遍即可。原创 2023-02-27 23:33:45 · 99 阅读 · 0 评论 -
PAT甲组1011 World Cup Betting
超级无敌大水题,把每行最大的找出来即可得出答案,创建一个字符数组用来输出。原创 2023-02-27 21:29:02 · 73 阅读 · 0 评论 -
PAT甲级1010 Radix
所以在二分的时候,如果太大我们不仅需要当前进制的值大于另一个数,而且我们还需要判断一下是不是变成了负数,变成负数也是相当于太大。可以使用二分是因为后面的进制得出的数一定比前面进制得出的数要大,满足单调性所以可以使用二分。不用二分,单纯从前往后模拟不能获得满分,超时所以只能选择二分。原创 2023-02-27 21:17:39 · 129 阅读 · 0 评论 -
PAT甲级1009 Product of Polynomials
题意就是两个多项式相乘,我们定义一个结构体poly存每一项的系数和指数,定义ans数组用来存答案式子的系数,用指数当下标,两项相乘其实就是系数相乘,指数相加,我们把系数相乘的结果存到对应的指数既可,maxx用来存指数最大的那一项是哪一项,题目中已经给出了从前到后指数递减。原创 2023-02-27 15:59:56 · 66 阅读 · 0 评论 -
PAT甲级1008 Elevator
记住每次停的时候直接加5秒即可,不要想一些其他情况,题目给的有些模糊,我就是想太多第一次错了一部分。超级无敌大水题,完全是来送分的。原创 2023-02-27 15:03:18 · 59 阅读 · 0 评论 -
PAT甲级1007 Maximum Subsequence Sum
这道题其实就是求一个序列中的最大连续子序列的问题。原创 2023-02-27 14:50:39 · 83 阅读 · 0 评论 -
PAT甲组1006 Sign In and Sign Out
定义early和late两个函数来判断两个时间哪个更早和哪个更晚,后来我发现一个函数就够用了,late就是你转换条件用early函数即可,第一个人我们直接把他的上下班时间记录下来,后面的我们都用他们的上班和下班时间跟最早的上班和最晚的下班时间作比较,如果更早或者更晚我们就记录下来。我定义了一个timeme的结构体用来保存每个人上班下班的时间,里面有hms分别对应小时分钟和秒,id记录对应人的id号,最后用来查找名字。原创 2023-02-26 22:20:51 · 63 阅读 · 0 评论 -
PAT甲级1005 Spell It Right
我们定义一个s字符串数组,里面存放从0到9的英语,定义一个字符串ans作为答案,初始为换行(这个无所谓,我看样例答案都会带一个就写了)然后倒序对每一位数字翻译为英语即可。这道题目非常简单,意思就是把题目给的一串数字加起来,然后根据结果从前到尾一位一位翻译成英语即可。原创 2023-02-26 22:00:07 · 70 阅读 · 0 评论 -
PAT甲级1004 Counting Leaves
我使用了r数组表明两个节点是否有父亲孩子的关系,r[x][y]如果为1表明x是y的父亲,这是一种单向关系,x如果是y的父亲,那么y就不能是x的父亲,我又使用了一个数组c来记录每个节点都有多少个孩子,还有一个变量deep记录我们这颗树的深度,在每次dfs搜索过程中维持deep的值即可,如果当前dfs的这个节点没有孩子,那么当前深度的ans数组加1即可,如果有孩子那么就遍历孩子。这道题考的是树,我们使用dfs遍历把每个节点的深度都得到,然后建立一个ans数组保存当前深度都有几个节点没有孩子即可。原创 2023-02-26 21:37:27 · 102 阅读 · 0 评论 -
PAT甲级1003 Emergency
如果搜索过程已经到了终点,首先判断当前路径花费是否小于最短路径的花费,如果小于最短路径花费,那么更新最短路径的花费,ans记录的是最短花费路径的数目,直接设为1,因为之前ans记录的是之前最短路径花费的数目,但是现在表明之前的路径不是最短路径,所以需要把ans置为1,因为目前的最短花费路径找到了一条,同时更新ansx,ansx记录的是最短花费路径所得到的权值,之前的路径不管权值多大都不是最短花费路径,所以我们需要舍去直接取当前最短花费路径的权值和。原创 2023-02-26 19:31:01 · 100 阅读 · 0 评论 -
PAT甲级1002 A+B for Polynomials
这道题目非常简单就是给两个多项式,我们只需要把这两个多项式相加并输出即可,我定义了一个ans数组用来记录每一项的系数是多少,而ans中的下标代表这一项的指数,比如ans[1]就存着指数为1的系数,在输入时我们直接把两个多项式的系数输入即可。由于题目中输入已经是指数递减的情况,所以我们只需要存一下这两行第一个指数,最后就从这个指数递减寻找系数不为0的项输出即可。原创 2023-02-26 18:42:05 · 65 阅读 · 0 评论 -
PAT甲级1001 A+B Format
将a和b的和求出来然后存入一个字符串中,我们对这个字符串倒序处理,每次到三的倍数并且前面还有数字的话就需要加一个逗号,最后根据是否为负数添加一个负号即可,如果为0的话需要特判一下。原创 2023-02-25 01:01:06 · 77 阅读 · 0 评论