E-COM-NET
首页
在线工具
Layui镜像站
SUI文档
联系我们
推荐频道
Java
PHP
C++
C
C#
Python
Ruby
go语言
Scala
Servlet
Vue
MySQL
NoSQL
Redis
CSS
Oracle
SQL Server
DB2
HBase
Http
HTML5
Spring
Ajax
Jquery
JavaScript
Json
XML
NodeJs
mybatis
Hibernate
算法
设计模式
shell
数据结构
大数据
JS
消息中间件
正则表达式
Tomcat
SQL
Nginx
Shiro
Maven
Linux
PAT_乙级
PAT_
甲级_1149 Dangerous Goods Packaging
题目大意:现有N对互不兼容的物品清单和M个需要装箱的货物清单,询问每一个需要装箱的货物清单是否可以完全兼容并装箱,如果可以输出Yes,否则输出No。算法思路:首先使用$incompatible$二维数组存储每一个物体的所有不兼容的物体,并使用$incompat$数组记录当前货箱有哪些无法兼容的物品(为true即为不可兼容),然后在每一个需要装箱的货物进行依次装箱的时候,先检查当前物品是否与已经装箱
乔梓鑫
·
2020-11-30 10:04
算法-数据结构
c++
PAT_
甲级_1146 Topological Order
题目大意:给定一个有向图,N个顶点,M条边,现给定K个查询,每一个查询输入一个序列,判断该序列是否是该图的拓扑排序序列,如果不是,输出该序列的编号(从0开始)算法思路:模拟拓扑排序的过程,对于输入的序列,先检查其入度是否为0,不为0说明该序列不是拓扑排序序列,否则就将该结点的邻接点的入度全部减一,依次向下进行判断,知道退出循环。为了防止最后一个测试点的格式错误,所有不是拓扑排序的序列编号都使用re
乔梓鑫
·
2020-11-30 00:41
算法-数据结构
c++
PAT_
甲级_1146 Topological Order
题目大意:给定一个有向图,N个顶点,M条边,现给定K个查询,每一个查询输入一个序列,判断该序列是否是该图的拓扑排序序列,如果不是,输出该序列的编号(从0开始)算法思路:模拟拓扑排序的过程,对于输入的序列,先检查其入度是否为0,不为0说明该序列不是拓扑排序序列,否则就将该结点的邻接点的入度全部减一,依次向下进行判断,知道退出循环。为了防止最后一个测试点的格式错误,所有不是拓扑排序的序列编号都使用re
乔梓鑫
·
2020-11-30 00:19
算法-数据结构
c++
PAT_
甲级_1145 Hashing - Average Search Time
题目大意:给定N个数字插入到用户指定长度为MSize的hash表中,如果X无法插入就输出Xcannotbeinserted.紧接着给出M个查询的数字,计算平均M个数字的查找时间。算法思路:首先对于输入的hash表长度MSize得判断是否为素数,如果不是,需要将其增加为最小素数table_size,其次对于插入过程,如果当前数字num的插入位置没有冲突就直接插入其中,否则就进行正向平方探针法查找插入
乔梓鑫
·
2020-11-29 18:43
算法-数据结构
c++
PAT_
甲级_1145 Hashing - Average Search Time
题目大意:给定N个数字插入到用户指定长度为MSize的hash表中,如果X无法插入就输出Xcannotbeinserted.紧接着给出M个查询的数字,计算平均M个数字的查找时间。算法思路:首先对于输入的hash表长度MSize得判断是否为素数,如果不是,需要将其增加为最小素数table_size,其次对于插入过程,如果当前数字num的插入位置没有冲突就直接插入其中,否则就进行正向平方探针法查找插入
乔梓鑫
·
2020-11-29 18:43
算法-数据结构
c++
PAT_
甲级_1144 The Missing Number
题目大意:给定一个长度为N的序列,需要输出该序列中最小的没有出现的正整数算法思路:使用map记录所有输入的正数,然后从1开始一直向后查找map中没有出现的正数,然后输出退出循环即可。注意点:1、如果是使用hash数组来记录每一个出现的正数的话,容易在最后一个测试点出现段错误。2、虽然题目说输入的数字在int范围内,但是如果没有出现缺少的情况下,最大的正数就是N,因为如果有缺失一定在N以内的数字,并
乔梓鑫
·
2020-11-29 18:10
算法-数据结构
c++
PAT_
甲级_1144 The Missing Number
题目大意:给定一个长度为N的序列,需要输出该序列中最小的没有出现的正整数算法思路:使用map记录所有输入的正数,然后从1开始一直向后查找map中没有出现的正数,然后输出退出循环即可。注意点:1、如果是使用hash数组来记录每一个出现的正数的话,容易在最后一个测试点出现段错误。2、虽然题目说输入的数字在int范围内,但是如果没有出现缺少的情况下,最大的正数就是N,因为如果有缺失一定在N以内的数字,并
乔梓鑫
·
2020-11-29 17:51
算法-数据结构
c++
PAT_
甲级_1143 Lowest Common Ancestor
题目大意:给定一颗二叉排序树的先序序列,输出待查询的两个节点的最近公共祖先。算法思路1(不建树):使用$pre$存放输入的先序序列,$isLegal$标记每一个树中的节点,对于输入的节点只要小于0或者$isLegal$对应值为false,就说明不在树中,输出对应的$ERROR$信息,都在就在先序序列中进行搜索,假设输入的结点为$a$和$b$,那么对应$a$和$b$的所有祖先一定是在先序序列中从左向
乔梓鑫
·
2020-11-29 12:42
算法-数据结构
c++
PAT_
甲级_1143 Lowest Common Ancestor
题目大意:给定一颗二叉排序树的先序序列,输出待查询的两个节点的最近公共祖先。算法思路1(不建树):使用$pre$存放输入的先序序列,$isLegal$标记每一个树中的节点,对于输入的节点只要小于0或者$isLegal$对应值为false,就说明不在树中,输出对应的$ERROR$信息,都在就在先序序列中进行搜索,假设输入的结点为$a$和$b$,那么对应$a$和$b$的所有祖先一定是在先序序列中从左向
乔梓鑫
·
2020-11-29 11:33
算法-数据结构
c++
PAT_
甲级_1135 Is It A Red-Black Tree
题目大意:给定K给测试用例,每一个测试用例给定一个N个结点的二叉搜索树的前序序列,要求判断该二叉树是否是红黑树。算法思路:首先使用isRed记录所有的红色结点,这样在建树的时候就可以使用正数来建树。然后再根据先序序列建立二叉搜索树(不需要中序),然后再使用先序遍历判断该数是否是红黑树即可。建树过程:每一次递归访问首先建立根节点并初始化数据,然后找到第一个大于根节点的位置k,这样[preL+1,k-
乔梓鑫
·
2020-11-28 22:16
算法-数据结构
c++
PAT_
甲级_1142 Maximal Clique
题目大意:给定一个无向图G,顶点编号为1到Nv,Ne条边,判断给出的一组顶点集合是否构成该图的一个极大完全子图,如果是输出Yes,否则判断是否是一个完全子图,如果是输出NotMaximal,否则输出NotaClique。算法思路:首先得判断输入的集合是否是当前图G的一个完全子图,这里采用isClique函数来实现,如果是就再判断是否是一个极大完全子图,这里采用isMaximal来实现,最后就根据判
乔梓鑫
·
2020-11-28 22:44
算法-数据结构
c++
PAT_
甲级_1135 Is It A Red-Black Tree
题目大意:给定K给测试用例,每一个测试用例给定一个N个结点的二叉搜索树的前序序列,要求判断该二叉树是否是红黑树。算法思路:首先使用isRed记录所有的红色结点,这样在建树的时候就可以使用正数来建树。然后再根据先序序列建立二叉搜索树(不需要中序),然后再使用先序遍历判断该数是否是红黑树即可。建树过程:每一次递归访问首先建立根节点并初始化数据,然后找到第一个大于根节点的位置k,这样[preL+1,k-
乔梓鑫
·
2020-11-28 22:21
算法-数据结构
c++
PAT_
甲级_1142 Maximal Clique
题目大意:给定一个无向图G,顶点编号为1到Nv,Ne条边,判断给出的一组顶点集合是否构成该图的一个极大完全子图,如果是输出Yes,否则判断是否是一个完全子图,如果是输出NotMaximal,否则输出NotaClique。算法思路:首先得判断输入的集合是否是当前图G的一个完全子图,这里采用isClique函数来实现,如果是就再判断是否是一个极大完全子图,这里采用isMaximal来实现,最后就根据判
乔梓鑫
·
2020-11-28 22:48
算法-数据结构
c++
PAT_
甲级_1141 PAT Ranking of Institutions
题目大意:给定N个学生的ID,成绩和所属学校,现要求按照每一个学校参与的学生信息获取学校的排名并输出。算法思路:我们使用Institution保存需要输出的学院的每一个信息,在输入的时候使用mapinstitution容器来保存每一个学校的相关信息,然后再将信息搜集完毕所有学校添加进vectorresult容器中以方便排序从而获取排名,最后再输出即可。获取排名的方法://获取排名intra=1;/
乔梓鑫
·
2020-11-28 16:40
算法-数据结构
c++
PAT_
甲级_1140 Look-and-say Sequence
题目大意:给定一个[0,9]的数字D和正整数N,第一个数字为D,后面每一个数字都是用来描述前面一个数字所产生的,要求输出第N个数字。比如第一个数字为1,描述为有一个1,那么第二个数字就是数字1和次数1的组合11,依次类推。算法思路:这里采用字符串来处理该问题比较方便进行拼接操作,首先第一个数字为输入的D,那么第N个数字就是处理了N-1次后的结果,我们每一次处理使用字符串s来保存,并且每一次都会重新
乔梓鑫
·
2020-11-28 16:07
算法-数据结构
c++
PAT_
甲级_1141 PAT Ranking of Institutions
题目大意:给定N个学生的ID,成绩和所属学校,现要求按照每一个学校参与的学生信息获取学校的排名并输出。算法思路:我们使用Institution保存需要输出的学院的每一个信息,在输入的时候使用mapinstitution容器来保存每一个学校的相关信息,然后再将信息搜集完毕所有学校添加进vectorresult容器中以方便排序从而获取排名,最后再输出即可。获取排名的方法://获取排名intra=1;/
乔梓鑫
·
2020-11-28 16:43
算法-数据结构
c++
PAT_
甲级_1140 Look-and-say Sequence
题目大意:给定一个[0,9]的数字D和正整数N,第一个数字为D,后面每一个数字都是用来描述前面一个数字所产生的,要求输出第N个数字。比如第一个数字为1,描述为有一个1,那么第二个数字就是数字1和次数1的组合11,依次类推。算法思路:这里采用字符串来处理该问题比较方便进行拼接操作,首先第一个数字为输入的D,那么第N个数字就是处理了N-1次后的结果,我们每一次处理使用字符串s来保存,并且每一次都会重新
乔梓鑫
·
2020-11-28 16:09
算法-数据结构
c++
PAT_
甲级_1139 First Contact
题目大意:一张人际关系网络图,然后给出一对情侣A和B(负数代表女生,正数代表男生),要求找到A的朋友(不是B,和A性别相同)C,B的朋友(不是A,和B的性别相同)D,如果C和D是朋友那么输出C和D的编号(输出的编号均为正数),并且按照C的非递减排列,如果相同,则按照D的升序排列。算法思路:对于每个人的编号保存其符号进行输入,使用string类型变量接收,这样,判断性别是否相同直接判断两个字符串长度
乔梓鑫
·
2020-11-28 11:02
算法-数据结构
c++
PAT_
甲级_1139 First Contact
题目大意:一张人际关系网络图,然后给出一对情侣A和B(负数代表女生,正数代表男生),要求找到A的朋友(不是B,和A性别相同)C,B的朋友(不是A,和B的性别相同)D,如果C和D是朋友那么输出C和D的编号(输出的编号均为正数),并且按照C的非递减排列,如果相同,则按照D的升序排列。算法思路:对于每个人的编号保存其符号进行输入,使用string类型变量接收,这样,判断性别是否相同直接判断两个字符串长度
乔梓鑫
·
2020-11-28 10:09
算法-数据结构
c++
PAT_
甲级_1138 Postorder Traversal
题目大意:给定一颗二叉树的前序和中序遍历序列,输出后序遍历序列的第一个数字算法思路:这里采用不建树但是借鉴建树的过程,后序遍历第一个结点实际上是左子树最左的结点,我们只需要不断递归访问左子树,直到第一次遇到最左的结点即可,这里使用变量c来控制是否是第一次访问,初始为0,在c==0&&preL==preR说明是第一次到达最左的结点,那么就输出当前结点并且++c。注意点:1、测试的时间在测试点4时而高
乔梓鑫
·
2020-11-27 23:12
算法-数据结构
c++
PAT_
甲级_1138 Postorder Traversal
题目大意:给定一颗二叉树的前序和中序遍历序列,输出后序遍历序列的第一个数字算法思路:这里采用不建树但是借鉴建树的过程,后序遍历第一个结点实际上是左子树最左的结点,我们只需要不断递归访问左子树,直到第一次遇到最左的结点即可,这里使用变量c来控制是否是第一次访问,初始为0,在c==0&&preL==preR说明是第一次到达最左的结点,那么就输出当前结点并且++c。注意点:1、测试的时间在测试点4时而高
乔梓鑫
·
2020-11-27 23:12
算法-数据结构
c++
PAT_
甲级_1137 Final Grading
题目大意:给出三个名单表格,分别记录考生的在线编程的成绩、期中成绩和期末成绩;需要计算最终成绩,然后筛选出能够获得证书的名单,并按照最终成绩的降序和ID的升序排列输出。算法思路:使用Student保存学生的所有相关信息,然后使用mapstudents记录所有的学生id与学生信息的映射,在输入的时候仅仅保存学生的id和分数就好,无需做任何预处理,然后遍历students,将所有可以获得证书的学生添加
乔梓鑫
·
2020-11-27 23:41
算法-数据结构
c++
PAT_
甲级_1137 Final Grading
题目大意:给出三个名单表格,分别记录考生的在线编程的成绩、期中成绩和期末成绩;需要计算最终成绩,然后筛选出能够获得证书的名单,并按照最终成绩的降序和ID的升序排列输出。算法思路:使用Student保存学生的所有相关信息,然后使用mapstudents记录所有的学生id与学生信息的映射,在输入的时候仅仅保存学生的id和分数就好,无需做任何预处理,然后遍历students,将所有可以获得证书的学生添加
乔梓鑫
·
2020-11-27 23:41
算法-数据结构
c++
PAT_
甲级_1136 A Delayed Palindrome
题目大意:给定一个不超过1000位的数字A,如果是回文数,就输出Aisapalindromicnumber.否则就计算该数和其逆置数的和如果在10次计算内其结果C是回文数,就输出每一步的计算过程和Cisapalindromicnumber.算法思路:由于输入数据不超过1000位,说明数字的范围超过了longlong,所以得使用string来处理该数字并且编写函数add处理2个字符串的加法操作,并且
乔梓鑫
·
2020-11-27 12:21
算法-数据结构
c++
回文
PAT_
甲级_1134 Vertex Cover
题目大意:如果一个图的所有边的领接点至少有一个点在集合中,那么就称为这个集合为一个vertexcover,现给出一个图的顶点N和边数M,M条边的信息,和K次查询的集合元素,问当前集合是否是该图的一个vertexcover。算法思路:我们使用edges数组存储输入的M条边,每一次查询的时候就使用unordered_mapvertices记录输入的集合顶点为true,然后遍历每一条边,如果该边的2个领
乔梓鑫
·
2020-11-27 12:09
算法-数据结构
c++
PAT_
甲级_1131 Subway Map
题目大意:给一个无向图,求出从一点到另外一点的最短路径,这里的最短,指的是从起点到终点所经历的点的数目最少,如果有多条,输出中转站点最少的。算法思路:一开始想到的是用Dijkstra算法求解该问题,但是Dijkstra算法更适合求解第一标尺为边权相关问题,所以想到了DFS,并设置其参数depth,用来记录在从起点到终点的遍历过程中所经历的结点个数,然后采用全局量minDepth保存最小的depth
乔梓鑫
·
2020-11-27 12:08
算法-数据结构
c++
图
dfs
PAT_
甲级_1133 Splitting A Linked List
题目大意:给定一个单链表,节点数目N和阈值K,从新将链表按照如下规则进行排序,节点值小于0的在最左边,[0,K]的在中间,大于K的在最右边,同时同一类别的节点其相对顺序不能改变.算法思路:算法思路1:由于题目给出的是静态链表,那么数据和地址实际上是绑定在一起的,next指针基本可以先不考虑,我们给链表上每一个节点设置一个flag和id,分别表示当前节点的类别(0对应小于0的节点,1对应[0,K]的
乔梓鑫
·
2020-11-27 12:08
算法-数据结构
c++
链表
PAT_
甲级_1132 Cut Integer
题目大意:给定一个数字Z,其位数为偶数,在其中间划开,前面的数字为A,后面的数字为B,如果Z能整除A*B,输出Yes,否则输出No。算法思路:看到分割问题,首先想到的是字符串分割,我们采用strings来接受输入的数字,然后将其前半部分分割并转化为整数为a,后半部分分割并转化为整数为B,并将s转化为整数z,如果z%(a*b)==0,输出Yes,否则输出No。注意点:1、a和b,也就是除数有可能为0
乔梓鑫
·
2020-11-27 12:08
算法-数据结构
c++
字符串
PAT_
甲级_1072 Gas Station
题目大意:现在有N座房子,M个加油站待选择点,K条边,现在要在M个加油站待选择点选择一个加油站出来,要求满足距离N个房子尽可能远但是同时也得保证房子均在服务范围Ds中,如果有多个选择平均距离最小的,如果还有多个,选择编号最小的。算法思路:典型的最短距离求解问题,使用Dijkstra算法完成即可,这里得先了解我们需要获得什么样的信息,我们通过Dijkstra算法可以获得当前加油站到所有房子的最短距离
乔梓鑫
·
2020-11-27 12:34
算法-数据结构
c++
dfs
图
PAT_
甲级_1136 A Delayed Palindrome
题目大意:给定一个不超过1000位的数字A,如果是回文数,就输出Aisapalindromicnumber.否则就计算该数和其逆置数的和如果在10次计算内其结果C是回文数,就输出每一步的计算过程和Cisapalindromicnumber.算法思路:由于输入数据不超过1000位,说明数字的范围超过了longlong,所以得使用string来处理该数字并且编写函数add处理2个字符串的加法操作,并且
乔梓鑫
·
2020-11-27 12:10
算法-数据结构
c++
回文
PAT_
甲级_1134 Vertex Cover
题目大意:如果一个图的所有边的领接点至少有一个点在集合中,那么就称为这个集合为一个vertexcover,现给出一个图的顶点N和边数M,M条边的信息,和K次查询的集合元素,问当前集合是否是该图的一个vertexcover。算法思路:我们使用edges数组存储输入的M条边,每一次查询的时候就使用unordered_mapvertices记录输入的集合顶点为true,然后遍历每一条边,如果该边的2个领
乔梓鑫
·
2020-11-26 19:31
算法-数据结构
c++
PAT_
甲级_1133 Splitting A Linked List
题目大意:给定一个单链表,节点数目N和阈值K,从新将链表按照如下规则进行排序,节点值小于0的在最左边,[0,K]的在中间,大于K的在最右边,同时同一类别的节点其相对顺序不能改变.算法思路:算法思路1:由于题目给出的是静态链表,那么数据和地址实际上是绑定在一起的,next指针基本可以先不考虑,我们给链表上每一个节点设置一个flag和id,分别表示当前节点的类别(0对应小于0的节点,1对应[0,K]的
乔梓鑫
·
2020-11-26 19:59
算法-数据结构
c++
链表
PAT_
甲级_1132 Cut Integer
题目大意:给定一个数字Z,其位数为偶数,在其中间划开,前面的数字为A,后面的数字为B,如果Z能整除A*B,输出Yes,否则输出No。算法思路:看到分割问题,首先想到的是字符串分割,我们采用strings来接受输入的数字,然后将其前半部分分割并转化为整数为a,后半部分分割并转化为整数为B,并将s转化为整数z,如果z%(a*b)==0,输出Yes,否则输出No。注意点:1、a和b,也就是除数有可能为0
乔梓鑫
·
2020-11-26 19:26
算法-数据结构
c++
字符串
PAT_
甲级_1131 Subway Map
题目大意:给一个无向图,求出从一点到另外一点的最短路径,这里的最短,指的是从起点到终点所经历的点的数目最少,如果有多条,输出中转站点最少的。算法思路:一开始想到的是用Dijkstra算法求解该问题,但是Dijkstra算法更适合求解第一标尺为边权相关问题,所以想到了DFS,并设置其参数depth,用来记录在从起点到终点的遍历过程中所经历的结点个数,然后采用全局量minDepth保存最小的depth
乔梓鑫
·
2020-11-26 19:54
算法-数据结构
c++
图
dfs
PAT_
甲级_1087 All Roads Lead to Rome
题目大意:有N个城市,K条无向边,现在需要从某个给定的起始城市出发,前往名为"ROM"的城市,给出每条边所需要消耗的花费,求从起始城市出发,到达城市ROM所需要的最少花费,并输出最少花费的路径。如果这样的路径有多条,则选择路径上城市的幸福值之和最大的那条路径,如果路径仍然不唯一,则选择路径上城市的平均幸福值最大的那条。算法思路:此题也是典型的Dijkstra算法模板题目,我们这里的最短路径变化为最
乔梓鑫
·
2020-11-24 21:38
算法-数据结构
c++
图
dfs
PAT_
甲级_1072 Gas Station
题目大意:现在有N座房子,M个加油站待选择点,K条边,现在要在M个加油站待选择点选择一个加油站出来,要求满足距离N个房子尽可能远但是同时也得保证房子均在服务范围Ds中,如果有多个选择平均距离最小的,如果还有多个,选择编号最小的。算法思路:典型的最短距离求解问题,使用Dijkstra算法完成即可,这里得先了解我们需要获得什么样的信息,我们通过Dijkstra算法可以获得当前加油站到所有房子的最短距离
乔梓鑫
·
2020-11-24 21:38
算法-数据结构
c++
dfs
图
PAT_
甲级_1087 All Roads Lead to Rome
题目大意:有N个城市,K条无向边,现在需要从某个给定的起始城市出发,前往名为"ROM"的城市,给出每条边所需要消耗的花费,求从起始城市出发,到达城市ROM所需要的最少花费,并输出最少花费的路径。如果这样的路径有多条,则选择路径上城市的幸福值之和最大的那条路径,如果路径仍然不唯一,则选择路径上城市的平均幸福值最大的那条。算法思路:此题也是典型的Dijkstra算法模板题目,我们这里的最短路径变化为最
乔梓鑫
·
2020-11-24 15:39
算法-数据结构
c++
图
dfs
PAT_
甲级_1018 Public Bike Management
题目大意:城市里面有一些公共自行车站,每一个车站最大容纳Cmax辆车,如果该车站的车辆现在有Cmax/2辆车,那么说明它处于perfect状态,现在有一个站点Sp汇报有问题,需要控制中心(PBMC)就会找到一条距离它最短的路径,携带或者在路上回收多余的车辆带到Sp,使得它是perfect的状态,并且将多余车辆带回PBMC,现在要求找一条从PBMC到Sp的最短路径,如果该路径有多条,选择从PBMC携
乔梓鑫
·
2020-11-24 15:38
算法-数据结构
c++
dfs
图
PAT_
甲级_1030 Travel Plan
题目要求:现有N个城市,M条道路,并给出M条道路的距离和耗费,现在给定起点S和终点D,要求求出起点到终点最短路径、最短距离和耗费,若有多条输出耗费最小的算法思路:这个是单源最短距离问题,这里使用Dijkstra算法的进行求解,这里需要求解的信息主要有三个,而且存在两个不同优先级的约束条件,那么我们先使用Dijkstra算法求解获得具备最短距离的所有最短路径,然后使用深度优先遍历所有的最短路径,在其
乔梓鑫
·
2020-11-24 15:17
算法-数据结构
c++
图
dfs
PAT_
甲级_1003 Emergency
题目大意:给出N个城市,M条无向边。每个城市中都有一定数目的救援小组,所有边的边权均有输入得到,现在给出起点和终点,求从起点到终点的最短路径条数以及最短路径上的救援小组数目之和。如果有多条最短路径,则输出数目之和最大的。算法思路:本题需要求解从C1到C2的最短路径上的相关信息,那么很自然联想到用Dijstra算法,此题基本上算的上是模板题目,直接套用Dijstra算法的具体过程即可,这里唯一的不同
乔梓鑫
·
2020-11-24 15:17
算法-数据结构
c++
图
最短路径
PAT_
甲级_1018 Public Bike Management
题目大意:城市里面有一些公共自行车站,每一个车站最大容纳Cmax辆车,如果该车站的车辆现在有Cmax/2辆车,那么说明它处于perfect状态,现在有一个站点Sp汇报有问题,需要控制中心(PBMC)就会找到一条距离它最短的路径,携带或者在路上回收多余的车辆带到Sp,使得它是perfect的状态,并且将多余车辆带回PBMC,现在要求找一条从PBMC到Sp的最短路径,如果该路径有多条,选择从PBMC携
乔梓鑫
·
2020-11-24 15:14
算法-数据结构
c++
dfs
图
PAT_
甲级_1030 Travel Plan
题目要求:现有N个城市,M条道路,并给出M条道路的距离和耗费,现在给定起点S和终点D,要求求出起点到终点最短路径、最短距离和耗费,若有多条输出耗费最小的算法思路:这个是单源最短距离问题,这里使用Dijkstra算法的进行求解,这里需要求解的信息主要有三个,而且存在两个不同优先级的约束条件,那么我们先使用Dijkstra算法求解获得具备最短距离的所有最短路径,然后使用深度优先遍历所有的最短路径,在其
乔梓鑫
·
2020-11-23 10:14
算法-数据结构
c++
图
dfs
PAT_
甲级_1003 Emergency
题目大意:给出N个城市,M条无向边。每个城市中都有一定数目的救援小组,所有边的边权均有输入得到,现在给出起点和终点,求从起点到终点的最短路径条数以及最短路径上的救援小组数目之和。如果有多条最短路径,则输出数目之和最大的。算法思路:本题需要求解从C1到C2的最短路径上的相关信息,那么很自然联想到用Dijstra算法,此题基本上算的上是模板题目,直接套用Dijstra算法的具体过程即可,这里唯一的不同
乔梓鑫
·
2020-11-20 16:00
算法-数据结构
c++
图
最短路径
PAT
乙级
1055 集体照 (25分)
题目拍集体照时队形很重要,这里对给定的N个人K排的队形设计排队规则如下:每排人数为N/K(向下取整),多出来的人全部站在最后一排;后排所有人的个子都不比前排任何人矮;每排中最高者站中间(中间位置为m/2+1,其中m为该排人数,除法向下取整);每排其他人以中间人为轴,按身高非增序,先右后左交替入队站在中间人的两侧(例如5人身高为190、188、186、175、170,则队形为175、188、190、
hhcccaptain
·
2020-11-20 13:55
PAT-Basic
c++
PAT_
甲级_1034 Head of a Gang
题目大意:给出若干人之间的通话长度,按照这些通话将他们分成若干个组。现在给定一个犯罪团伙,而该组内点权最大的人视为头目。要求输出犯罪团伙的个数,并且按照头目姓名字典序从小到大的顺序输出每个犯罪团伙的头目姓名和成员个数。算法思路:这道题的题意得先理解清楚,Ineachgang,theonewithmaximumtotalweightisthehead.这句话的意思是$maximum$$total$$
乔梓鑫
·
2020-11-20 10:19
算法-数据结构
c++
dfs
图
PAT_
甲级_1076 Forwards on Weibo
题目大意:在微博中,每个用户都可能被若干其他用户关注。而当该用户发布一条消息时,关注他的人就可以看到这条信息并且选择是否转发它,且转发的消息也可以被关注他的人再次转发,但是同一用户最多转发该信息一次(信息的最初发布者不能转发该消息),现在给出N个用户的关注情况以及一个转发层数上限L,并给出最初发布消息的用户编号,求在转发层数上限内消息最多会被多少用户转发算法思路:首先得理解题意assumingth
乔梓鑫
·
2020-11-20 10:45
算法-数据结构
c++
bfs
图
PAT_
甲级_1021 Deepest Root
题目大意:给出N个节点和N-1条边,问它们是否可以形成一颗树,如果能选择输的深度最大的根节点,输出所有满足该条件的根节点,如果不是一颗树输出Error:Kcomponents,其中K是连通分量的个数.算法思路:首先注意到,该题的图有不连通,所以必须得先判断当前图是否连通,具体做法就是使用$DFS$常规遍历一遍该图,获得连通分量的个数connected_component_count,如果不为1,直
乔梓鑫
·
2020-11-20 10:13
算法-数据结构
c++
图
dfs
PAT_
甲级_1013 Battle Over Cities
题目大意:给定N座城市,其中有M条边是相连的,如果有其中一个城市被敌人占领的话,求出需要连接多少条边让剩下的城市连通.算法思路:该城市的数据结构很显然是一个图的结构,那么我们如果将一个顶点去除后,剩下来的顶点会组成若干个连通分量,那么要让这剩下来的结点全部连接起来变成一个图,那么就等价于将若干个连通分量连接成一个连通分量,我们知道2个连通分量只需要在这2个连通分量分别取出一个顶点然后相连就变成了一
乔梓鑫
·
2020-11-20 10:12
算法-数据结构
图
c++
dfs
PAT_
甲级_1034 Head of a Gang
题目大意:给出若干人之间的通话长度,按照这些通话将他们分成若干个组。现在给定一个犯罪团伙,而该组内点权最大的人视为头目。要求输出犯罪团伙的个数,并且按照头目姓名字典序从小到大的顺序输出每个犯罪团伙的头目姓名和成员个数。算法思路:这道题的题意得先理解清楚,Ineachgang,theonewithmaximumtotalweightisthehead.这句话的意思是$maximum$$total$$
乔梓鑫
·
2020-11-20 10:23
算法-数据结构
c++
dfs
图
PAT_
甲级_1076 Forwards on Weibo
题目大意:在微博中,每个用户都可能被若干其他用户关注。而当该用户发布一条消息时,关注他的人就可以看到这条信息并且选择是否转发它,且转发的消息也可以被关注他的人再次转发,但是同一用户最多转发该信息一次(信息的最初发布者不能转发该消息),现在给出N个用户的关注情况以及一个转发层数上限L,并给出最初发布消息的用户编号,求在转发层数上限内消息最多会被多少用户转发算法思路:首先得理解题意assumingth
乔梓鑫
·
2020-11-19 17:28
算法-数据结构
c++
bfs
图
上一页
4
5
6
7
8
9
10
11
下一页
按字母分类:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
其他