算法PTA题解
文章平均质量分 84
彼岸天平
这个作者很懒,什么都没留下…
展开
-
2021天梯赛题解
2021天梯赛题解2021程序设计天梯赛在4月24日举办,本文是天梯赛的部分题解,有的问题在当时也没有得到满分,由于学校开启了天梯赛的重现比赛,再写一写。注意:本文答案不是标准答案,每道题收获的分数写在了相应位置,注意查看。有的人退出,有的人加入。始终如一,不忘初心。L1-1 人与神 ( 5分 / 5 分) 第一个5分是代码获得的分数,第二个5分是题目总分,下同跨界大神 L. Peter Deutsch 有一句名言:“To iterate is human, to recurse divin原创 2021-04-27 12:10:08 · 5596 阅读 · 5 评论 -
再会迪杰斯特拉(Dijkstra)
迪杰斯特拉算法算法说明迪杰斯特拉算法用来求解某一个起点到以其他所有点为终点的最短路径长度;算法思路-贪心算法以下图为例指定一个节点(即起点),例如计算“A”到其他节点的最短路径;引入两个集合(S,U),S集合包含所有已经求出其最短路径的点(以及其最短长度),U集合包括未求出的最短路径的点;所有和起点A直接相连的节点更新其与A的距离为路径长度,没有直接相连的设置为+∞;从U集合中找出距离起点s路径最短的点,加入S集合,例如第一步最小的为A->D,距离为2;更新U集合路径,if原创 2021-04-17 19:30:25 · 4063 阅读 · 0 评论 -
7-2 是否完全二叉搜索树 (30分)
将一系列给定数字顺序插入一个初始为空的二叉搜索树(定义为左子树键值大,右子树键值小),你需要判断最后的树是否一棵完全二叉树,并且给出其层序遍历的结果。输入格式:输入第一行给出一个不超过20的正整数N;第二行给出N个互不相同的正整数,其间以空格分隔。输出格式:将输入的N个正整数顺序插入一个初始为空的二叉搜索树。在第一行中输出结果树的层序遍历结果,数字间以1个空格分隔,行的首尾不得有多余空格。...原创 2019-12-25 17:12:21 · 460 阅读 · 0 评论 -
7-1 是否同一棵二叉搜索树 (30分)
给定一个插入序列就可以唯一确定一棵二叉搜索树。然而,一棵给定的二叉搜索树却可以由多种不同的插入序列得到。例如分别按照序列{2, 1, 3}和{2, 3, 1}插入初始为空的二叉搜索树,都得到一样的结果。于是对于输入的各种插入序列,你需要判断它们是否能生成一样的二叉搜索树。输入格式:输入包含若干组测试数据。每组数据的第1行给出两个正整数N (≤10)和L,分别是每个序列插入元素的个数和需要检查的...原创 2019-12-25 17:11:12 · 622 阅读 · 0 评论 -
7-2 城市间紧急救援 (25 分)
作为一个城市的应急救援队伍的负责人,你有一张特殊的全国地图。在地图上显示有多个分散的城市和一些连接城市的快速道路。每个城市的救援队数量和每一条连接两个城市的快速道路长度都标在地图上。当其他城市有紧急求助电话给你的时候,你的任务是带领你的救援队尽快赶往事发地,同时,一路上召集尽可能多的救援队。输入格式:输入第一行给出4个正整数N、M、S、D,其中N(2≤N≤500)是城市的个数,顺便假设城市的编...原创 2019-12-03 17:33:43 · 1703 阅读 · 1 评论 -
7-4 最短工期 (25 分)
参考链接:https://blog.csdn.net/tianwei0822/article/details/88642441一个项目由若干个任务组成,任务之间有先后依赖顺序。项目经理需要设置一系列里程碑,在每个里程碑节点处检查任务的完成情况,并启动后续的任务。现给定一个项目中各个任务之间的关系,请你计算出这个项目的最早完工时间。输入格式:首先第一行给出两个正整数:项目里程碑的数量 N(≤1...原创 2019-12-03 17:28:37 · 2678 阅读 · 0 评论 -
7-1 公路村村通 (30 分)
现有村落间道路的统计数据表中,列出了有可能建设成标准公路的若干条道路的成本,求使每个村落都有公路连通所需要的最低成本。输入格式:输入数据包括城镇数目正整数N(≤1000)和候选道路数目M(≤3N);随后的M行对应M条道路,每行给出3个正整数,分别是该条道路直接连通的两个城镇的编号以及该道路改建的预算成本。为简单起见,城镇从1到N编号。输出格式:输出村村通需要的最低成本。如果输入数据不足以保...原创 2019-11-23 19:22:04 · 2295 阅读 · 0 评论 -
7-3 喊山 (30 分)
搞了好几天心态的一道题,还是菜,原因就是想复杂了,第一次遇到了内存超限的问题,把邻接矩阵由二维数组换成了vector才过的。7-3 喊山 (30 分)喊山,是人双手围在嘴边成喇叭状,对着远方高山发出“喂—喂喂—喂喂喂……”的呼唤。呼唤声通过空气的传递,回荡于深谷之间,传送到人们耳中,发出约定俗成的“讯号”,达到声讯传递交流的目的。原来它是彝族先民用来求援呼救的“讯号”,慢慢地人们在生活实践中发...原创 2019-11-22 19:12:54 · 824 阅读 · 0 评论 -
7-2 哈夫曼编码 (30 分)
给定一段文字,如果我们统计出字母出现的频率,是可以根据哈夫曼算法给出一套编码,使得用此编码压缩原文可以得到最短的编码总长。然而哈夫曼编码并不是唯一的。例如对字符串"aaaxuaxz",容易得到字母 ‘a’、‘x’、‘u’、‘z’ 的出现频率对应为 4、2、1、1。我们可以设计编码 {‘a’=0, ‘x’=10, ‘u’=110, ‘z’=111},也可以用另一套 {‘a’=1, ‘x’=01, ‘...原创 2019-11-22 18:58:50 · 5738 阅读 · 0 评论 -
1.修理牧场
农夫要修理牧场的一段栅栏,他测量了栅栏,发现需要N块木头,每块木头长度为整数Li个长度单位,于是他购买了一条很长的、能锯成N块的木头,即该木头的长度是Li 的总和。但是农夫自己没有锯子,请人锯木的酬金跟这段木头的长度成正比。为简单起见,不妨就设酬金等于所锯木头的长度。例如,要将长度为20的木头锯成长度为8、7和5的三段,第一次锯木头花费20,将木头锯成12和8;第二次锯木头花费12,将长度...原创 2019-11-22 18:48:44 · 376 阅读 · 0 评论 -
7-4 银行排队问题之单队列多窗口加VIP服务 (30 分)
7-4 银行排队问题之单队列多窗口加VIP服务 (30 分)说实话这道题挺恶心 有意思的,大模拟,主要的思路就是模拟时间轴。题目描述假设银行有K个窗口提供服务,窗口前设一条黄线,所有顾客按到达时间在黄线后排成一条长龙。当有窗口空闲时,下一位顾客即去该窗口处理事务。当有多个窗口可选择时,假设顾客总是选择编号最小的窗口。有些银行会给VIP客户以各种优惠服务,例如专门开辟VIP窗口。为了最大限度...原创 2019-11-03 16:31:18 · 2212 阅读 · 0 评论 -
7-2 银行排队问题之单窗口“夹塞”版 (30 分)
PTA排队“夹塞”是引起大家强烈不满的行为,但是这种现象时常存在。在银行的单窗口排队问题中,假设银行只有1个窗口提供服务,所有顾客按到达时间排成一条长龙。当窗口空闲时,下一位顾客即去该窗口处理事务。此时如果已知第i位顾客与排在后面的第j位顾客是好朋友,并且愿意替朋友办理事务的话,那么第i位顾客的事务处理时间就是自己的事务加朋友的事务所耗时间的总和。在这种情况下,顾客的等待时间就可能被影响。假设所...原创 2019-10-29 22:34:22 · 730 阅读 · 0 评论 -
7-5 列车厢调度 (25 分)
7-5 列车厢调度 (25 分) 1 ====== <--移动方向 / 3 ===== \ 2 ====== -->移动方向大家或许在某些数据结构教材上见到过“列车厢调度问题”(当然没见过...原创 2019-07-16 14:55:55 · 1529 阅读 · 0 评论 -
7-4 堆栈模拟队列 (25 分)
7-4 堆栈模拟队列 (25 分)设已知有两个堆栈S1和S2,请用这两个堆栈模拟出一个队列Q。所谓用堆栈模拟队列,实际上就是通过调用堆栈的下列操作函数:int IsFull(Stack S):判断堆栈S是否已满,返回1或0;int IsEmpty (Stack S ):判断堆栈S是否为空,返回1或0;void Push(Stack S, ElementType item ):将元素ite...原创 2019-07-14 16:07:17 · 1467 阅读 · 0 评论 -
7-3 银行排队问题之单队列多窗口服务 (25 分)
7-3 银行排队问题之单队列多窗口服务 (25 分)假设银行有K个窗口提供服务,窗口前设一条黄线,所有顾客按到达时间在黄线后排成一条长龙。当有窗口空闲时,下一位顾客即去该窗口处理事务。当有多个窗口可选择时,假设顾客总是选择编号最小的窗口。本题要求输出前来等待服务的N位顾客的平均等待时间、最长等待时间、最后完成时间,并且统计每个窗口服务了多少名顾客。输入格式:输入第1行给出正整数N(≤100...原创 2019-07-12 17:19:53 · 3105 阅读 · 0 评论