PAT_甲级_1146 Topological Order

2020-11-29
阅读 2 分钟
1.2k
给定一个有向图,N个顶点,M条边,现给定K个查询,每一个查询输入一个序列,判断该序列是否是该图的拓扑排序序列,如果不是,输出该序列的编号(从0开始)

PAT_甲级_1145 Hashing - Average Search Time

2020-11-29
阅读 2 分钟
1.2k
给定N个数字插入到用户指定长度为MSize的hash表中,如果X无法插入就输出X cannot be inserted.紧接着给出M个查询的数字,计算平均M个数字的查找时间。

PAT_甲级_1144 The Missing Number

2020-11-29
阅读 1 分钟
1k
2、虽然题目说输入的数字在int范围内,但是如果没有出现缺少的情况下,最大的正数就是N ,因为如果有缺失一定在N以内的数字,并且后面就算出现比N大的数字也没有必要求解了。(该条件不考虑直接死循环可以)

PAT_甲级_1143 Lowest Common Ancestor

2020-11-29
阅读 6 分钟
1k
使用$pre$存放输入的先序序列,$isLegal$标记每一个树中的节点,对于输入的节点只要小于0或者$isLegal$对应值为false,就说明不在树中,输出对应的$ERROR$信息,都在就在先序序列中进行搜索,假设输入的结点为$a$和$b$,那么对应$a$和$b$的所有祖先一定是在先序序列中从左向右依次排列,那么第一次在先序序列中出现的祖...

PAT_甲级_1135 Is It A Red-Black Tree

2020-11-28
阅读 4 分钟
1.1k
首先使用isRed记录所有的红色结点,这样在建树的时候就可以使用正数来建树。然后再根据先序序列建立二叉搜索树(不需要中序),然后再使用先序遍历判断该数是否是红黑树即可。

PAT_甲级_1142 Maximal Clique

2020-11-28
阅读 3 分钟
947
给定一个无向图G,顶点编号为1到Nv,Ne条边,判断给出的一组顶点集合是否构成该图的一个极大完全子图,如果是输出Yes,否则判断是否是一个完全子图,如果是输出Not Maximal,否则输出Not a Clique。

PAT_甲级_1141 PAT Ranking of Institutions

2020-11-28
阅读 3 分钟
1k
我们使用Institution保存需要输出的学院的每一个信息,在输入的时候使用map institution容器来保存每一个学校的相关信息,然后再将信息搜集完毕所有学校添加进vector result容器中以方便排序从而获取排名,最后再输出即可。

PAT_甲级_1140 Look-and-say Sequence

2020-11-28
阅读 1 分钟
897
给定一个[0,9]的数字D和正整数N,第一个数字为D,后面每一个数字都是用来描述前面一个数字所产生的,要求输出第N个数字。比如第一个数字为1,描述为有一个1,那么第二个数字就是数字1和次数1的组合11,依次类推。

PAT_甲级_1139 First Contact

2020-11-28
阅读 3 分钟
1.1k
一张人际关系网络图,然后给出一对情侣A和B(负数代表女生,正数代表男生),要求找到A的朋友(不是B,和A性别相同)C,B的朋友(不是A,和B的性别相同)D,如果C和D是朋友那么输出C和D的编号(输出的编号均为正数),并且按照C的非递减排列,如果相同,则按照D的升序排列。

PAT_甲级_1138 Postorder Traversal

2020-11-27
阅读 2 分钟
1.1k
这里采用不建树但是借鉴建树的过程,后序遍历第一个结点实际上是左子树最左的结点,我们只需要不断递归访问左子树,直到第一次遇到最左的结点即可,这里使用变量c来控制是否是第一次访问,初始为0,在c==0&&preL==preR说明是第一次到达最左的结点,那么就输出当前结点并且++c。

PAT_甲级_1137 Final Grading

2020-11-27
阅读 3 分钟
1.3k
给出三个名单表格,分别记录考生的在线编程的成绩、期中成绩和期末成绩;需要计算最终成绩,然后筛选出能够获得证书的名单,并按照最终成绩的降序和ID的升序排列输出。

PAT_甲级_1136 A Delayed Palindrome

2020-11-27
阅读 2 分钟
1.4k
给定一个不超过1000位的数字A,如果是回文数,就输出A is a palindromic number.否则就计算该数和其逆置数的和如果在10次计算内其结果C是回文数,就输出每一步的计算过程和C is a palindromic number.

PAT_甲级_1134 Vertex Cover

2020-11-26
阅读 2 分钟
1.3k
如果一个图的所有边的领接点至少有一个点在集合中,那么就称为这个集合为一个vertex cover,现给出一个图的顶点N和边数M,M条边的信息,和K次查询的集合元素,问当前集合是否是该图的一个vertex cover。

PAT_甲级_1133 Splitting A Linked List

2020-11-26
阅读 3 分钟
1.6k
给定一个单链表,节点数目N和阈值K,从新将链表按照如下规则进行排序,节点值小于0的在最左边,[0,K]的在中间,大于K的在最右边,同时同一类别的节点其相对顺序不能改变.

PAT_甲级_1132 Cut Integer

2020-11-26
阅读 1 分钟
986
看到分割问题,首先想到的是字符串分割,我们采用string s来接受输入的数字,然后将其前半部分分割并转化为整数为a,后半部分分割并转化为整数为B,并将s转化为整数z,如果z%(a*b)==0,输出Yes,否则输出No。

PAT_甲级_1131 Subway Map

2020-11-26
阅读 4 分钟
1.4k
一开始想到的是用Dijkstra算法求解该问题,但是Dijkstra算法更适合求解第一标尺为边权相关问题,所以想到了DFS,并设置其参数depth,用来记录在从起点到终点的遍历过程中所经历的结点个数,然后采用全局量minDepth保存最小的depth,为了方便判断是否是中转结点问题,使用邻接矩阵存储两个连接的点的边对应的线路,比如2000...

PAT_甲级_1072 Gas Station

2020-11-24
阅读 4 分钟
1.7k
现在有N座房子,M个加油站待选择点,K条边,现在要在M个加油站待选择点选择一个加油站出来,要求满足距离N个房子尽可能远但是同时也得保证房子均在服务范围Ds中,如果有多个选择平均距离最小的,如果还有多个,选择编号最小的 。

PAT_甲级_1087 All Roads Lead to Rome

2020-11-24
阅读 4 分钟
1.5k
有N个城市,K条无向边,现在需要从某个给定的起始城市出发,前往名为"ROM"的城市,给出每条边所需要消耗的花费,求从起始城市出发,到达城市ROM所需要的最少花费,并输出最少花费的路径。如果这样的路径有多条,则选择路径上城市的幸福值之和最大的那条路径,如果路径仍然不唯一,则选择路径上城市的平均幸福值最大的那条 。

PAT_甲级_1018 Public Bike Management

2020-11-24
阅读 5 分钟
1.8k
城市里面有一些公共自行车站,每一个车站最大容纳Cmax辆车,如果该车站的车辆现在有Cmax/2辆车,那么说明它处于perfect状态,现在有一个站点Sp汇报有问题,需要控制中心(PBMC)就会找到一条距离它最短的路径,携带或者在路上回收多余的车辆带到Sp,使得它是perfect的状态,并且将多余车辆带回PBMC,现在要求找一条从PBMC到Sp的最...

PAT_甲级_1030 Travel Plan

2020-11-23
阅读 3 分钟
1.4k
现有N个城市,M条道路,并给出M条道路的距离和耗费,现在给定起点S和终点D,要求求出起点到终点最短路径、最短距离和耗费,若有多条输出耗费最小的

PAT_甲级_1003 Emergency

2020-11-20
阅读 5 分钟
1.5k
给出N个城市,M条无向边。每个城市中都有一定数目的救援小组,所有边的边权均有输入得到,现在给出起点和终点,求从起点到终点的最短路径条数以及最短路径上的救援小组数目之和。如果有多条最短路径,则输出数目之和最大的。

PAT_甲级_1034 Head of a Gang

2020-11-20
阅读 4 分钟
1.6k
给出若干人之间的通话长度,按照这些通话将他们分成若干个组。现在给定一个犯罪团伙,而该组内点权最大的人视为头目。要求输出犯罪团伙的个数,并且按照头目姓名字典序从小到大的顺序输出每个犯罪团伙的头目姓名和成员个数。

PAT_甲级_1076 Forwards on Weibo

2020-11-19
阅读 2 分钟
1.4k
在微博中,每个用户都可能被若干其他用户关注。而当该用户发布一条消息时,关注他的人就可以看到这条信息并且选择是否转发它,且转发的消息也可以被关注他的人再次转发,但是同一用户最多转发该信息一次(信息的最初发布者不能转发该消息),现在给出N个用户的关注情况以及一个转发层数上限L,并给出最初发布消息的用户编号...

PAT_甲级_1021 Deepest Root

2020-11-19
阅读 2 分钟
1.3k
给出N个节点和N-1条边,问它们是否可以形成一颗树,如果能选择输的深度最大的根节点,输出所有满足该条件的根节点,如果不是一颗树输出Error: K components,其中K是连通分量的个数.

PAT_甲级_1013 Battle Over Cities

2020-11-19
阅读 2 分钟
1.1k
该城市的数据结构很显然是一个图的结构,那么我们如果将一个顶点去除后,剩下来的顶点会组成若干个连通分量,那么要让这剩下来的结点全部连接起来变成一个图,那么就等价于将若干个连通分量连接成一个连通分量,我们知道2个连通分量只需要在这2个连通分量分别取出一个顶点然后相连就变成了一个连通分量,所以需要连接的边数...

PAT_甲级_1098 Insertion or Heap Sort

2020-11-18
阅读 3 分钟
1.2k
首先将序列划分为有序序列部分和无序序列部分,初始有序序列为序列中第一个元素,对于长度为N的序列,插入排序会经过N-1趟排序,完成将N-1个无序序列的元素依次插入到有序序列之中,那么可以看到,插入排序分为外部循环控制趟数,内部循环负责找到插入位置,每次循环使用t暂存待插入元素,然后在$[1,j]$(有序序列)中查询...

PAT_甲级_1107 Social Clusters

2020-11-17
阅读 3 分钟
1.7k
有N个人,如果任意2个人的爱好有相同的(就是有交集),那么这2个人就是属于同一个社交网络,要求输出这N个人组成了几个社交网络,并且输出每个社交网络的人数

PAT_甲级_1066 Root of AVL Tree

2020-11-16
阅读 4 分钟
1.3k
此题主要考察的就是AVL的建树过程,AVL树的构建过程本质和二叉搜索树完全一致,只不过在其基础上添加了平衡因子,需要对不平衡的情况进行左旋和右旋,所以得计算结点的平衡因子,又由于平衡因子的计算依赖左子树和右子树的高度,所以得在结点中新增高度height属性和获取结点高度的函数getHeight,这样就可以使用getBalanc...

PAT_甲级_1099 Build A Binary Search Tree

2020-11-15
阅读 2 分钟
1.1k
道题和1064的思路是一样的,都是紧紧把握一条,就是利用给定的二叉树的信息获得中序遍历的结点的下标序列,对给定的待插入数字进行排序得到中序遍历的结点的数字序列,然后两者一一对应就可以将该二叉查找树构造出来。这里由于输入的是结点的编号,那么用二叉树的静态存储方法比较方便,使用in数组保存结点中序遍历的编号序列...

PAT_甲级_1064 Complete Binary Search Tree

2020-11-15
阅读 2 分钟
1.1k
首先明确CBT的概念,这里要求每一次尽可能的满,除了最后一层,这里的定义符合完全二叉树,那么我们可以对这颗完全二叉树按照层次遍历序列进行编号,这样便于输出层序遍历序列(可能现在还不明白,看到后面就好了),为了方便轻松获得左孩子和右孩子我们使用1来代表根节点的编号.然后对于给定结点数量N的完全二叉树,其层次序列的...