PAT
语阑gz
这个作者很懒,什么都没留下…
展开
-
PAT 2020年秋考解答
7-1 Panda and PP Milk (20分)这道题杀死了不少同学的心态,但是如果想到方法了就特别简单简单说下做法,一共对全表进行两次扫描,第一次从左到右,第二次从右到左,每次扫描时,如果后面熊猫比前面重,则供奶量+1(以2、3、4计,最后统一乘100)如果体重持平,则保持不变,体重减轻,则供奶量恢复为2,从左向右扫描满足所有熊猫看到自己左边的熊猫都会满意,从右向左满足右边熊猫,对每个熊猫取两次扫描中的较大值,即为答案。体重18016010015014514213813原创 2020-09-07 21:06:29 · 1066 阅读 · 4 评论 -
1026 Table Tennis (30分)时间戳法
题目链接题目不难读懂,并且不涉及什么算法,但是逻辑上非常繁琐,算法笔记上有非常详细的题意解释,这里就不赘述了。这里主要是写我用的一种模拟时间滴答的方法,逻辑上可能要简单一些。主要就是将题目中的时间 08:00:00 - 21:00:00 以每秒一个间隔,总共 13*60*60=46800 个时钟滴答,在每一个始终滴答到来的时候,依次处理玩家到达事件、桌子使用计时减1事件、空桌子安排玩家使用事件。这样思考总体上逻辑简洁一些。具体的看代码 :#include<bits/stdc++.h>us原创 2020-06-17 18:06:41 · 611 阅读 · 0 评论 -
Dijkstra算法与SPFA算法
最近看了《算法笔记》上面关于最短路径的部分,学习了一种之前没见过的算法:SPFA。理论上SPFA算法会比Dijkstra快,顾而找了一题测试一下。使用PAT A1072题,因为这题求最短路径的部分很单纯,没有其他的权,而且测试点的复杂度够高,能够看出时间上的差别。题目链接速度对比(重点看测试点4)Dijkstra速度![image.png](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9jZG4ubmxhcmsuY29tL3l1cXVlLzAvMjAyMC9w原创 2020-06-12 23:54:16 · 1277 阅读 · 0 评论 -
1017 Queueing at Bank (25分)
题目链接思路先按到达时间排序,并移除迟到的,然后依次计算等待时间。本题需要以秒计算,以分钟输出#define _CRT_SECURE_NO_WARNINGS#include <iostream>#include <vector>#include <algorithm>using namespace std;typedef struct cus...原创 2020-02-13 16:06:53 · 168 阅读 · 0 评论 -
1014 Waiting in Line (30分)
题目链接题目大意模拟一个银行等待队列,银行有n个窗口,每个窗口前有m个位置,不能进入位置的客户按照顺序id等待,当有位置空出时进入,给出被询问客户的服务完成时间。注意:银行在17:00关门,不能在此前被服务的人只能"Sorry"了。注意注意注意:这里是指在17:00未被服务,若服务已经开始,便将服务完成。思路用一个循环模拟时间演进,服务完一个客户就让下一个客户进入排队。代码如下#d...原创 2020-01-26 23:56:07 · 95 阅读 · 0 评论 -
1007 Maximum Subsequence Sum (25分)
题目链接题目大意给定一个数列,找出其具有最大和的子列思路首先从第一个节点开始,若为负则跳过,为正则假定位子列的头结点,用另一个指针指向子列的尾结点,并计算子列和,若大于mansun 则更新maxsum和输出的头尾节点,若和小于零,则可以确定结果必定不能包含此子列,从尾结点加1的位置开始再次循环确定新的假定头结点,对于子列和为0的情况,依据输出最小索引i和j的规则,需要包含此子列。总体时间...原创 2020-01-08 22:09:08 · 78 阅读 · 0 评论 -
1004 Counting Leaves (30分)
题目链接题目大意:给出一棵树,问每一层各有多少个叶子结点。#define _CRT_SECURE_NO_WARNINGS#include<iostream>#include<vector>#include<queue>using namespace std;struct ncb{ int id; int numchild = 0; int ...原创 2020-01-08 20:19:45 · 96 阅读 · 0 评论 -
1003 Emergency (25分)
题目链接比较典型的最短路径问题,代码如下#define _CRT_SECURE_NO_WARNINGS#include<iostream>#include<vector>using namespace std;#define MAXDIS 99999999struct ncb //node control block 存储节点(即city)的一些信息...原创 2020-01-08 20:12:56 · 114 阅读 · 0 评论 -
1002 A+B for Polynomials (25分)
题目链接题目意思是模拟多项式乘法,看过姥姥慕课应该有类似的题,应为最大只有1000项,所以用数组即可,最后输出注意格式。代码如下#define _CRT_SECURE_NO_WARNINGS#include<iostream>#include<vector>using namespace std;#define NU 0int main(){ flo...原创 2020-01-08 19:49:44 · 372 阅读 · 0 评论 -
1001 A+B Format (20分)
题目链接简单题,输出时注意要用%3d格式化。代码如下#define _CRT_SECURE_NO_WARNINGS#include<iostream>#include<vector>using namespace std;int main(){ int a, b; cin >> a >> b; int x, y; int ...原创 2020-01-08 19:46:09 · 80 阅读 · 0 评论 -
KMP 串的模式匹配 (25分)
题目链接代码写的一般,此处只做备忘,以后再看。#define _CRT_SECURE_NO_WARNINGS#include<iostream>#include<vector>#include<string>using namespace std;void bulidmatch(string pattern, vector<int> ...原创 2019-12-19 00:20:07 · 429 阅读 · 0 评论 -
11-散列4 Hashing - Hard Version (30分)
题目链接哈希表的逆向思维,我们首先计算每一个位置上的数据的余数是不是等于其位号(即hash的key)如果相等则记为0,否则记录差值。如下:位置(key)012345678910数据33113123438272232-121余数0121155010-110差值000230179-...原创 2019-12-15 15:28:20 · 503 阅读 · 0 评论 -
11-散列2 Hashing (25分)
题目链接题目还是比较直白的,说一下遇到的坑没注意是只递增的平方探测1不是素数。。。#define _CRT_SECURE_NO_WARNINGS#include<iostream>#include<vector>#include<cmath>using namespace std;int retprime(int m){ if(...原创 2019-12-15 11:28:30 · 91 阅读 · 0 评论 -
10-排序5 PAT Judge (25分)
题目链接题目思路很简单直白,但是代码上还是很复杂的,需要千万细心。还有这道题的输出要求也太复杂了8。是否提交编译是否通过输出形式输出分数yy分数分数yn若满足任意其他输出条件则输出,否则不输出0nn若满足任意其他输出条件则输出,否则不输出-所以要分别记录是否提交和是否编译通过。#define _CRT_SECURE_NO_WARN...原创 2019-12-12 20:23:42 · 171 阅读 · 0 评论 -
10-排序6 Sort with Swap(0, i) (25分)
题目链接这道题需要多思考,其实是要寻找最终有几个环,这些环中若包含0,则需要交换的次数为环中元素数-1,若无0,则需要交换的次数为环中元素数+1,最终将各结果相加。坑点:千万不要傻乎乎的去swap,会超时的!!#define _CRT_SECURE_NO_WARNINGS#include<iostream>#include<vector>using names...原创 2019-12-12 20:10:56 · 88 阅读 · 0 评论 -
08-图9 关键活动 (30分)
题目链接这道题并不难,难的是这句话关键活动输出的顺序规则是:任务开始的交接点编号小者优先,起点编号相同时,与输入时任务的顺序相反。所以我们需要额外的path来记录分叉,最后还要用sort排序。#include<iostream>#include<vector>#include<queue>#include<algorithm>#de...原创 2019-12-08 13:31:03 · 143 阅读 · 0 评论 -
08-图8 How Long Does It Take (25分)
题目链接关键路径问题,也是拓扑排序的变形,只用额外增加一个数组记录每个任务的最晚完成时间即可。对于每个节点(activity),我们需要记录他们的入度和最晚完成时间,入度为0的结点可执行,最晚时间的更新按最大来具体解释在代码中:#include<iostream>#include<vector>#include<queue>#define MAX...原创 2019-12-07 23:32:10 · 205 阅读 · 0 评论 -
08-图7 公路村村通 (30分)
题目链接最小生成树问题,总体比较简单,直接放上代码。#include<iostream>#include<vector>#define MAX 10000000using namespace std;int main(){ int n, m, x1, x2, price; cin >> n >> m; vector<v...原创 2019-12-06 22:55:58 · 203 阅读 · 0 评论 -
07-图6 旅游规划 (25分)
题目连接单源图最短路径问题,无脑上Dijkstra,本题略有变形,就是在距离相同时需要计算最小价格,我们只需要额外增加一个记录价格的数组即可代码如下#include<iostream>#include<vector>#define MAX 10000000using namespace std;struct DATAS //用于存储每个节点(城市)的距离...原创 2019-12-05 20:50:37 · 119 阅读 · 0 评论 -
06-图3 六度空间 (30 分)
“六度空间”理论又称作“六度分隔(Six Degrees of Separation)”理论。这个理论可以通俗地阐述为:“你和任何一个陌生人之间所间隔的人不会超过六个,也就是说,最多通过五个人你就能够认识任何一个陌生人。”如图1所示。“六度空间”理论虽然得到广泛的认同,并且正在得到越来越多的应用。但是数十年来,试图验证这个理论始终是许多社会学家努力追求的目标。然而由于历史的原因,这样的研究具有...原创 2019-12-03 12:22:32 · 130 阅读 · 0 评论 -
06-图2 Saving James Bond - Easy Version (25 分)
This time let us consider the situation in the movie “Live and Let Die” in which James Bond, the world’s most famous spy, was captured by a group of drug dealers. He was sent to a small piece of land ...原创 2019-12-03 12:15:08 · 122 阅读 · 0 评论 -
05-树8 File Transfer (25 分)
We have a network of computers and a list of bi-directional connections. Each of these connections allows a file transfer from one computer to another. Is it possible to send a file from any computer ...原创 2019-12-01 22:34:12 · 95 阅读 · 0 评论 -
05-树9 Huffman Codes (30 分)
In 1953, David A. Huffman published his paper “A Method for the Construction of Minimum-Redundancy Codes”, and hence printed his name in the history of computer science. As a professor who gives the f...原创 2019-12-01 15:54:04 · 175 阅读 · 0 评论 -
05-树7 堆中的路径 (25 分)
将一系列给定数字插入一个初始为空的小顶堆H[]。随后对任意给定的下标i,打印从H[i]到根结点的路径。输入格式:每组测试第1行包含2个正整数N和M(≤1000),分别是插入元素的个数、以及需要打印的路径条数。下一行给出区间[-10000, 10000]内的N个要被插入一个初始为空的小顶堆的整数。最后一行给出M个下标。输出格式:对输入中给出的每个下标i,在一行中输出从H[i]到根结点的路径上...原创 2019-11-30 23:27:26 · 155 阅读 · 0 评论 -
04-树6 Complete Binary Search Tree (30 分)
A Binary Search Tree (BST) is recursively defined as a binary tree which has the following properties:The left subtree of a node contains only nodes with keys less than the node’s key.The right subt...原创 2019-11-29 19:02:42 · 176 阅读 · 0 评论 -
04-树4 是否同一棵二叉搜索树 (25 分)
给定一个插入序列就可以唯一确定一棵二叉搜索树。然而,一棵给定的二叉搜索树却可以由多种不同的插入序列得到。例如分别按照序列{2, 1, 3}和{2, 3, 1}插入初始为空的二叉搜索树,都得到一样的结果。于是对于输入的各种插入序列,你需要判断它们是否能生成一样的二叉搜索树。输入格式:输入包含若干组测试数据。每组数据的第1行给出两个正整数N (≤10)和L,分别是每个序列插入元素的个数和需要检查的...原创 2019-11-29 14:47:23 · 214 阅读 · 0 评论 -
03-树2 List Leaves (25 分)
Given a tree, you are supposed to list all the leaves in the order of top down, and left to right.Input Specification:Each input file contains one test case. For each case, the first line gives a po...原创 2019-11-26 13:24:42 · 63 阅读 · 0 评论 -
03-树1 树的同构 (25 分)
给定两棵树T1和T2。如果T1可以通过若干次左右孩子互换就变成T2,则我们称两棵树是“同构”的。例如图1给出的两棵树就是同构的,因为我们把其中一棵树的结点A、B、G的左右孩子互换后,就得到另外一棵树。而图2就不是同构的。现给定两棵树,请你判断它们是否是同构的。输入格式:输入给出2棵二叉树树的信息。对于每棵树,首先在一行中给出一个非负整数N (≤10),即该树的结点数(此时假设结点从0到N−...原创 2019-11-26 10:57:56 · 242 阅读 · 0 评论 -
02-线性结构2 一元多项式的乘法与加法运算 (20 分)
设计函数分别求两个一元多项式的乘积与和。输入格式:输入分2行,每行分别先给出多项式非零项的个数,再以指数递降方式输入一个多项式非零项系数和指数(绝对值均为不超过1000的整数)。数字间以空格分隔。输出格式:输出分2行,分别以指数递降方式输出乘积多项式以及和多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。零多项式应输出0 0。输入样例:4 3 4 -5 2 6 1 ...原创 2019-11-24 21:59:49 · 150 阅读 · 0 评论 -
02-线性结构4 Pop Sequence (满分)
题目如下Given a stack which can keep M numbers at most. Push N numbers in the order of 1, 2, 3, …, N and pop randomly. You are supposed to tell if a given sequence of numbers is a possible pop sequence o...原创 2019-11-23 21:52:12 · 110 阅读 · 0 评论 -
Reversing Linked List (附有多余结点不在链表上Sample)
卡了好久,终于满分了,先上图Given a constant K and a singly linked list L, you are supposed to reverse the links of every K elements on L. For example, given L being 1→2→3→4→5→6, if K=3, then you must output 3→2→...原创 2019-11-23 11:29:17 · 552 阅读 · 2 评论