
PAT甲
文章平均质量分 69
一打雪碧
这个作者很懒,什么都没留下…
展开
-
2019浙江大学考研复试上机题 Ambulance Dispatch (30 分)最直观的解法
思路最直观的解法就是,建完图之后,每读入一个pick-up spots,就以它为起点,进行一次dijkstra,获得从它到所有点(包括救护车派遣中心)的最短距离、前驱。之后,从每个救护车派遣中心出发,进行dfs,得到从该救护车派遣中心到当前pick-up spots的完整路径,比较路径即可,获得最优路径。使用优先队列优化的dijkstra,第四个数据点用时200ms。(睡觉#include <bits/stdc++.h>using namespace std;struct nod原创 2022-03-20 00:30:35 · 404 阅读 · 0 评论 -
PAT A1159 Structure of a Binary Tree测试点3答案错误?
原题链接测试点3这道题,测试点3,真坑。但是我试出来为什么错误了。因为测试点3里面有一个陈述,关于谁是谁的父亲的陈述,这个陈述里面,两个数的值是相同的。类似于“A is the parent of A”,这时候,应该是错误,但是如果代码没有检测两个数是否相同,则可能出错。注意以及关于siblings的判断,也应该首先判断是否两个数相同。只有当两个值不同、两个值不在同一层、两个值的父亲节点地址相同,siblings陈述才正确。AC代码:#include <bits/stdc++.h>原创 2022-03-15 16:38:24 · 639 阅读 · 0 评论 -
1053 Path of Equal Weight(最后一个测试点) 好久之前的代码,现在不能通过了?
首先,如果出现了这样的情况,大概率,代码逻辑是:在输入完每个非叶结点的孩子之后,将该结点的孩子结点按照权值排序,然后,代码去dfs遍历的时候,确实是首先遍历到权值大的孩子,然后保存路径、判断、输出路径。这逻辑没错,但是有漏洞。具体情况参考这篇文章看完这篇文章里面的例子,就明白了。这种判断逻辑,这能保证在同一层结点选择时,首先选择权值最大的结点,而如果在同一层有两个权值相同的结点,而下一层上,这两个结点的孩子权值不同,可能就会出错。AC代码代码逻辑是,直接找到所有符合条件的路径,然后对路径进行排序原创 2022-03-13 16:33:23 · 662 阅读 · 0 评论 -
2021年春季PAT甲级98分题解(附近7次pat统计数据)
0基础非科班的我,在自学数据结构之后,终于在第四次PAT考试,拿到了一个还满意的分数。将这次的题解贴一下第一题(扣了2分)题意给定两个正整数n、maxp,其中n <= 10,2 <= maxp < 100000,在maxp范围内求得一个有n个素数组成的等差序列,如果答案不唯一,输出等差最大的序列,答案还不唯一的话,输出第一个数最大的序列,如果找不到,则输出小于等于maxp的最大的素数。样例输入一5 1000输出一23 263 503 743 983输入二10 20原创 2021-03-14 22:26:46 · 931 阅读 · 0 评论 -
PAT甲级Good in C
这题考察字符串的使用,要是对于容器的使用比较熟练的话,这道题非常容易测试样例..C...C.C.C...CCCCCCC...CC...CC...CCCCC.C...CC...CCCCC.C...CC...CCCCC..CCC.C...CC....C....C....C...C.CCC.CCCC.C...CC...CC...CC...CC...CCCCC.CCCCCC....C....CCCC.C....C....CCCCCCCCCC原创 2021-03-13 10:37:42 · 278 阅读 · 0 评论 -
PAT Telefraud Detection(并查集,保存分组信息)
题目Telefraud Detection (25 分)Telefraud(电信诈骗) remains a common and persistent problem in our society. In some cases, unsuspecting victims lose their entire life savings. To stop this crime, you are supposed to write a program to detect those suspects from原创 2021-03-12 23:23:38 · 135 阅读 · 0 评论 -
PATA11141114 Family Property
原题链接1114 Family Property使用并查集题目告知,出现的所有的id都为4位数,也就是说,id最大就到9999,所以使用并查集最小数组要开到10000。使用数组father[10000]来记录每个人的父亲,初始为自己。在合并时,选择编号最小的进行合并。最重要的是,要保存下来所有的团体,得到了每个团体具体都有谁,之后,分别获取这个团体中的人数、总房产数量、总面积数量。开数据结构struct node{ int id,m,estate; double total_a.原创 2021-03-11 21:05:19 · 139 阅读 · 0 评论 -
PATA1142 Maximal Clique(测试点2、3)
原题链接PAT甲级1142 Maximal Clique思路使用邻接矩阵存储图,G[ u ] [ v ] 为1,代表u和v相通。可以先判断是否是团,即给的序列中是否有点不连通。接着判断是否是极大团,即是否还存在着不在序列中的点,这个点可以到所有这个序列中的点。如果存在这样的点的话,即为不是极大团。否则是极大团。#include <bits/stdc++.h>using namespace std;int n,e,q;bool app[210];int temp[210].原创 2021-03-09 22:08:04 · 306 阅读 · 0 评论 -
PATA1110 Complete Binary Tree
原题链接1110 Complete Binary Tree题意判断给定的二叉树是否是完全二叉树思路分析,什么样的树是完全二叉树非常好想,但是什么样的树不是完全二叉树,确实不太容易想全。其实就这么几种第一种情况:存在这样的结点:左孩子为空,而右孩子不为空第二种情况:已经出现过了存在左孩子、不存在右孩子的结点,又出现了这样的结点第三种情况:已经出现过叶子结点,但是又出现了非叶结点符合这三种情况之一即为非完全二叉树。代码可以针对这三种情况分别判断,我一开始只想起前两种情况来,提交时有两个测试.原创 2021-03-08 20:20:56 · 176 阅读 · 0 评论 -
PATA11381138 Postorder Traversal(不建树)
原题链接 PATA11381138 Postorder Traversal题意给定由值不同的结点组成的二叉树的先序遍历序列和中序遍历序列,问该二叉树的后序遍历序列的第一个结点是什么。本题题意没有什么难理解的,很直观。思路直接建树,进行后序遍历,记得剪枝,因为可能数据量比较大,题目告知,结点可能有50000个,所以,当后序遍历时找到了第一个结点时,剪枝直接返回。#include <bits/stdc++.h>using namespace std;struct node{.原创 2021-03-07 23:12:12 · 102 阅读 · 0 评论 -
PATA1074 Reversing Linked List(测试点1、5)
原题链接PATA1074 Reversing Linked List 本题不难,但是还是出了点小问题。题意是,每k个反转,最后不足k个,保持原样原来代码是#include <bits/stdc++.h>using namespace std;struct Node{ int r; int data,address,nextaddress; Node():r(1000000){} bool operator < (const Node &a.原创 2021-03-06 20:05:12 · 455 阅读 · 2 评论 -
PAT甲级1056 Mice and Rice
原题链接PAT甲级1056 Mice and Rice这道题,2020年7月份做的时候,做了好久才AC,今天又做了一次。使用了比较直观的思路,模拟了一遍题目。A掉了题意给了n只老鼠,以及每只老鼠的体重,注意题目告诉了,每只老鼠的体重满足== distinct non-negative numbers==,即不同的非负数,也就是说每只老鼠的体重不同,而且,并没有说是整数,所以对于每只老鼠的体重,最好是按照double型存放。做pat要对数据描述字眼敏感,没有说是整数,最好存储为double。.原创 2021-03-06 17:25:19 · 278 阅读 · 0 评论 -
PAT甲级1071 Speech Patterns(测试点2错误)以及关于unordered_map的一点说明
原题链接PAT甲级1071 Speech Patterns坑点:本题重新定义了单词。The input contains at least one alphanumerical character, i.e., one character from the set [0-9 A-Z a-z].以上是说有效字符是[0,9]、[a,z]、[A,Z],其余字符都可以看作是分隔符Here a “word” is defined as a continuous sequence of alphan.原创 2021-03-05 18:05:58 · 377 阅读 · 0 评论 -
PAT甲级1060 Are They Equal
原题链接PAT甲级1060 Are They Equal类似题目PAT甲级1073 Scientific Notation坑点这道题可以说是有不少坑点。1、数据可能有前导0,即可能有数据为0000123、00000.000123、0000.0000等2、如果数据类似于0.00000123,n为2,则应该是0.1210 ^ -5,而不是0.0010 ^ 2.3、如果数据为0,即当给的数据类似于0、00000、0.0000,n = 4时,应该输出0.0000*10^0,指数应该也是0,不是4。所.原创 2021-03-05 15:50:33 · 150 阅读 · 0 评论 -
PAT1063 Set Similarity(测试点4超时)set使用
原题链接1063 Set Similarity这道题挺简单的,就是给好几个数列,每个数列里面有可能有重复元素,再给定几个查询,每个查询给了两个数列编号(从1开始),问在这两个数列中都出现的数的个数nc 占 两个数组中的去掉重复数据后的数的个数nt的百分比。比如说99 87 10187 101 5 87这两个数组中,重复出现的元素为87,101,故nc = 2。而所有数据为5、87、99、101,即nt = 4,所以占比为50.0%。因为原数列中就可能包含有重复元素,所以使用unorder.原创 2021-03-05 11:35:16 · 238 阅读 · 2 评论 -
PATA1145 Hashing - Average Search Time(坑点说明)
原题链接1145 Hashing - Average Search Time本题考察哈希表,往里面放置数据以及计算进行探查平均次数。数据结构题目告诉所给定的表长都是小于等于10000的,所以,使用数组pos[10010]来记录当前位置是否被占用,初始值为false,以及数组h[10010]来记录当前位置里面放置的数据,初始值全部为-1,使用vector < int > no来记录插不进哈希表中的数据,使用sum来记录总的探查次数,初始值为0。const int maxn = 10010;原创 2021-03-04 16:57:51 · 238 阅读 · 1 评论 -
PAT甲级A11411141 PAT Ranking of Institutions超时问题
原题链接添加链接描述思索一番,该题还是写一篇文章,因为对于我帮助挺大的,其实也是困扰了半天。直观思路本题,最直观的思路是,使用unordered_map < string,double > 建立学校到成绩的映射,使用unordered_map < string,int > cnt建立从学校到人数的映射。使用vector < string > total 来存储下所有出现过的学校。代码如下#include <bits/stdc++.h>using原创 2021-02-27 21:41:42 · 193 阅读 · 0 评论 -
刷pat过程中的坑点
开贴记录刷pat过程中困扰我很久的坑点。2021/2/22pat甲级1061 Dating 以为两个字符相加结果是串,比如以为’0’+'5’为”05“,其实是‘e’,因为‘0’的ASC码值为48,‘5’的ASC码值为53,ASC码值为101的字符恰好为‘e’。#include <iostream>#include <string>using namespace std;int main(){ string ans; char ch = '0';//定义原创 2021-02-22 16:33:25 · 150 阅读 · 0 评论 -
PAT甲级1065 A+B and C (64bit) 详细版
原题链接1065 A+B and C (64bit)无论是在pat还是在leetcode中,总是特别喜欢出一些数据取到类型边界的问题。这都涉及到计算机组成原理中的数据在计算机中存放问题。现以PAT甲级1065题为出发点总结如下。众所周知,数据在计算机中是以二进制补码的形式存放的。其中有符号数的最高位解释为符号位,无符号数的最高位仍未数据位。以64位的long long为例,一个long long类型的整数在计算机中占据64bit,即8B(字节)。并且最高位即第63位(从0开始)为符号位,取值范围为[-原创 2021-02-20 22:48:38 · 553 阅读 · 5 评论 -
PATA1080 Graduate Admission
题目链接1080 Graduate Admission这个题,困扰了我好久,最后发现自己原来是手残,将排序的初值设为了1,应该是0啊!!!!思路将所有学生的信息存储下来,包括两个分数ge、gi,以及id,然后按照规则将学生排序。之后遍历已经排好顺序的学生,按照排名来查看当前学生的志愿学校的名额是否已经满了,如果没有满,则将该学生的id加入到该志愿学校的录取名单中,并将该学校的名额减一。如果名额已经满了,则查看该学校最后录取的学生的排名是否与当前学生的排名相同,如果相同,则将当前学生也加入该学校的录取名原创 2021-02-04 23:41:35 · 162 阅读 · 0 评论 -
PATA1095
这道题挺复杂的。是真的挺复杂。数据花里胡哨的。一定要注意一点:如果一个车在某时刻 t1 是“in”状态,那么当查询时间里面有 t1 时,要加上这辆车。但是当一个车在 t2 时间是“out”状态,那么如果查询时间里面有 t2 ,则不要加上这辆车,这点其实在给的样例里面也说了,需要仔细分析样例。也即该题的边界条件。思路总体思路:找出所有有效的时间对,即所有车停在校园的时间对。读入每一条记录,在读入过程中,将用标准时间格式给的时间转变为以秒为单位的时间。最重要的是,将不同车的记录,分开存储。这就需要一个结原创 2021-02-04 18:41:46 · 170 阅读 · 0 评论 -
1070 Mooncake
1070 Mooncake (25分)Mooncake is a Chinese bakery product traditionally eaten during the Mid-Autumn Festival. Many types of fillings and crusts can be found in traditional mooncakes according to the region’s culture. Now given the inventory amounts and the原创 2021-01-16 19:47:39 · 166 阅读 · 0 评论