- 博客(6)
- 资源 (3)
- 问答 (1)
- 收藏
- 关注
原创 PAT 1021. Deepest Root
【题目链接】 题目大意:给定一个无向图,如果它没有环且是连通的则证明是树,那么就要找出一个结点集,使得集合中的任意一点作为树的根节点,都能使得树的深度达到最大。否则,如果该图不是树,则要求输出图的连通分量的个数。 思路:本题可以用并查集或者dfs求连通分量个数。假设已经是树了,如何求deepest root呢?很显然的一个做法就是对树中的每个结点进行dfs搜索,每一次dfs都记下树能达到的最大
2015-05-31 09:05:26 532
原创 PAT 1018. Public Bike Management
这题就是求先最短路径,当有多条最短路径的时候按照如下原则择优:sent的自行车较少的更优,如果sent的自行车数量相同,则take back的自行车数量最少的更优。 第一次提交的时候只过了4个case,原因在于:只要前面的station自行车数量不足,就必须从PBMC派送自行车,无论后面路径上的自行车数量是否有多余,也就是说是一个不可逆转的过程。后来改写了程序,在Dijkstra算法的基础上,逐
2015-05-29 13:52:10 504
原创 PAT 1017. Queueing at Bank
【题目链接】 这道题比1014要简单,但是最后一个case始终过不了,暂时记载在这篇博文上。思路和1014差不多,只不过这题所有的人都站在了黄线外等待,只有窗口空闲才去该窗口获取服务。需要注意的有以下几点: 1、客户只要在17点01分之前到达,就一定有窗口对此客户服务到底,也就是说他开始接受服务的时间可以在17点01分及之后的时间。 2、当有窗口空闲,但是下一位顾客还未到来时,窗口需要等
2015-05-29 13:34:24 277
原创 PAT 1014. Waiting in Line
【题目链接】 基本思路:设置队列数组qInside[i]用来存放第i个窗口前对应的等待客户,队列qBehind用来存放黄线以外的等待客户。然后访问每个窗口前等待队列的队首元素,即customer编号。找出这些顾客中交易时间的最小值,假设此时对应的窗口编号为j,则弹出qInside[j]的队首元素,此时若qBehind非空,则将其队首元素压入qInside[j]。最后再对每个窗口前的等待队列进行一
2015-05-20 09:02:46 334
原创 PAT 1007. Maximum Subsequence Sum
【题目链接】 看完这个题目的时候我就想到了曾经做过的一个求完美数列的题目,用的是两点论的思想,这题好像也差不多。本题的关键就是如何确定最大子序列的起始位置i和j,我们用sum变量(初始化为0)来记录元素的和,MaxSum(初始化为负数)来记录最大子序列的和,sum从第一个非负数起开始累加同时更新MaxSum,若sum累加到第k1个位置的时候小于0了,则将sum重置为0,令temp=k1+1,其中
2015-05-17 10:23:14 419
原创 PAT 1003. Emergency
一开始看错了题目,以为第一个输出是要求最短距离,后来才发现是要求最短路径的条数。对于最短路径的条数和点权之和我们可以分别用两个数组numberPath[]和numberTeam[]来实现,numberPath[i]记录从起点到顶点i的最短路径的条数,numberTeam[i]记录从从起点到顶点i的所有最短路径中点权之和的最大值。然后当加入新的顶点之后得到的距离等于原来的最短距离,则对numberP
2015-05-15 13:47:32 407
基于Qt的一笔画小软件(欧拉回路算法的演示)
2016-02-25
PAT 1017. Queueing at Bank
2015-05-25
TA创建的收藏夹 TA关注的收藏夹
TA关注的人