![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
PAT-甲级
文章平均质量分 70
坚不萌
从必然人走向自由人。
展开
-
1047. Student List for Course (25)
1. 原题: https://www.patest.cn/contests/pat-a-practise/10472. 思路:题意:输出每个课程的学生名字。比较简单。思路:此题关键是处理超时问题。所以要把名字转换成数字来存储,用字符串超时。剩下的就是把每个课程的学生名字压入vector里面,再排序输出。3. 源码(已AC):#include#include原创 2017-02-04 23:53:44 · 275 阅读 · 0 评论 -
1046. Shortest Distance (20)
1. 原题: https://www.patest.cn/contests/pat-a-practise/10462. 思路:题意:在一个环路中,求两点间的最小距离。基本逻辑题。思路:常规思路是求出总长total,然后累计两点间的正向距离sum。反向距离是total-sum,输出两者的最小值。然而数组规模很大,最后一个测试点超时。改进的思路参考自:http://bl原创 2017-02-04 20:08:54 · 259 阅读 · 0 评论 -
1048. Find Coins (25)
1. 原题: https://www.patest.cn/contests/pat-a-practise/10482. 思路:题意:给出一系列面值及应付的钱,取出两个面值付款。存在多个,输出第一个最小的。思路:数据处理,比较简单。可以用数组。习惯用stl了,我用的map映射。已AC。3. 源码(已AC):#include#includeusing nam原创 2017-02-05 16:28:38 · 163 阅读 · 0 评论 -
1049. Counting Ones (30)
1. 原题: https://www.patest.cn/contests/pat-a-practise/10492. 思路:题意:输出从1~N之间的所有整数中含有1的总个数。思路:数学逻辑题。需要枚举,归纳出规律。不易想出来。首先,从1直接数的方法有些傻,抛弃掉。那么如何处理呢?不妨站在全局进行思考,我们无法准确知道1会出现在哪一位。那为何我们不从每一位出现1原创 2017-02-05 23:16:18 · 296 阅读 · 0 评论 -
1050. String Subtraction (20)
1. 原题: https://www.patest.cn/contests/pat-a-practise/10502. 思路:题意:把字符串s1中含有s2中的字符全部去除。思路:比较简单。利用ASCII从0~127的特性,记录s2中的字符十进制形式,然后将对应的下标元素置为1.最后遍历s1, 其字符在s2中为0则输出。已AC。3. 源码:#include原创 2017-02-06 11:44:01 · 175 阅读 · 0 评论 -
1052. Linked List Sorting (25)
1. 原题: https://www.patest.cn/contests/pat-a-practise/10522. 思路:题意:给出链表的静态表示方式,把链表从小到大排序。思路:先建一个MAX大的数组,下标表示地址,存储给出的结点。然后从首地址开始遍历,压入数组list中。最后输出。注意:1. 链表为空,输出“0 -1”。2. 给出的结点可能不在链表上。原创 2017-02-06 20:32:40 · 148 阅读 · 0 评论 -
1051. Pop Sequence (25)
1. 原题: https://www.patest.cn/contests/pat-a-practise/10512. 思路:题意:给定入栈序列1~N,判断给出的出栈序列是否可能。思路:数据栈的问题。直接利用stl中的栈来模拟就好了。3. 源码(已AC):#include#includeusing namespace std;int main(void)原创 2017-02-06 14:52:06 · 196 阅读 · 0 评论 -
1053. Path of Equal Weight (30)
1. 原题: https://www.patest.cn/contests/pat-a-practise/10532. 思路:题意:遍历出从根到叶子路径的总权值与给定的相等的序列。思路:核心是dfs了。然后一个问题是序列从大到小输出?怎么做呢。假设我们每次都从最大的孩子递归遍历,那么结果正是我们要的。所以,我们对每个父结点的孩子降序排序后,再dfs就好了。已原创 2017-02-07 13:06:47 · 185 阅读 · 0 评论 -
1054. The Dominant Color (20)
1. 原题: https://www.patest.cn/contests/pat-a-practise/10542. 思路:题意:在M*N个数中,找出占比超过一半的数字。思路:有多种方法,最普通的是用数组下标映射数字,记录最大值输出。还有一种巧妙的方法,即在线处理法。题目说存在一个主元素,即一个数超过一半。相当于这个数的个数减去其他不同的个数仍然大于0.原创 2017-02-07 14:20:21 · 197 阅读 · 0 评论 -
1055. The World's Richest (25)
1. 原题: https://www.patest.cn/contests/pat-a-practise/10552. 思路:题意:根据给定的年龄范围输出财富排行榜。思路:数据处理题。不难,建结构体,按照要求排序。然后对符合范围的遍历输出。注意:尽量不要用string,会超时。3. 源码(已AC):#include#include//使用sort函数#i原创 2017-02-07 17:41:59 · 197 阅读 · 0 评论 -
1056. Mice and Rice (25)
1. 原题: https://www.patest.cn/contests/pat-a-practise/10562. 思路:题意:不得不说,每个单词都认识,读了n遍就是没读懂题(摊手)。还是对照着输入说吧。第一行两个数分别为总人数,一个组的pk人数。第二行对应着编号从0~N-1的参赛者在游戏里获得的分数(可以这么理解)。第三行对应着分组顺序。即 6 0 8(参赛者编号)为原创 2017-02-07 21:01:14 · 250 阅读 · 1 评论 -
1058. A+B in Hogwarts (20)
1. 原题: https://www.patest.cn/contests/pat-a-practise/10582. 思路:题意:模拟十进制的加法进位运算。思路:比较简单,直接计算就好。已AC。3. 源码(已AC):#includeusing namespace std;int main(void){ //freopen("in.txt", "r",原创 2017-02-08 19:07:30 · 156 阅读 · 0 评论 -
1057. Stack (30)
1. 原题: https://www.patest.cn/contests/pat-a-practise/10572. 思路:题意:题目关键是求栈的中位数。思路:一般方法会超时。必须是O(1)或者O(log)求中位数才不会。可以用树状数组,或者用集合模拟大小堆。我用的是集合(multiset).一个small(小根堆),保存后一半。big(大根堆),保存前一半元素。原创 2017-02-08 15:29:52 · 245 阅读 · 0 评论 -
1079. Total Sales of Supply Chain (25)
1. 原题: https://www.patest.cn/contests/pat-a-practise/10792. 思路:题意:给定一棵树,求叶子结点所代表的值的总和。题目中从第二行起的每一行表示该行的行号(从0开始)的子结点。第一个0表示该行行号表示的结点是叶子结点。思路:dfs和bfs都可以。dfs简捷些。已AC。3. 源码:#include#原创 2017-02-15 23:26:26 · 180 阅读 · 0 评论 -
1080. Graduate Admission (30)
1. 原题: https://www.patest.cn/contests/pat-a-practise/10802. 思路:题意:结构体排序。按照总分->入学分数排序。刚开始想复杂了,以为学校先录取第一志愿的。其实不管几志愿,一视同仁,从高分开始录。所以,根据学生分数排名,从第一个学生去判断他的志愿学校能否录取就可以了,不需要考虑其他的。思路:关键之处是当多个排名一致原创 2017-02-17 17:18:59 · 266 阅读 · 0 评论 -
1008. Elevator
1.原题:https://www.patest.cn/contests/pat-a-practise/10082.思路:基本的数学运算。3.源码:#includeusing namespace std;const int up_time = 6;const int down_time = 4;const int stay_time = 5;//思路:基本的数学运算。in原创 2017-01-16 20:08:13 · 255 阅读 · 0 评论 -
1060. Are They Equal (25)
1. 原题: https://www.patest.cn/contests/pat-a-practise/10602. 思路:题意:转换成类似科学记数法的形式,并比较是否相等。思路:字符串处理题。坑比较多。若相等,则指数和尾数都要相等。核心是如何获得指数和尾数。要点:1. 给出的数可能是0,或00这种(最后一个测试点)。2. 可能有前导0, 如00123原创 2017-02-09 19:05:02 · 258 阅读 · 0 评论 -
1059. Prime Factors (25)
1. 原题: https://www.patest.cn/contests/pat-a-practise/10592. 思路:题意:将一个数进行分解成质因数,从小到大输出。思路:题目不难。有多种方法。可以先建立2~根号N的素数表,然后试除。亦或判断下一个素数的方法处理。我采用的边除边判断,并把质因数保存到map里。这样绕了远路了。注意1的特例。3.原创 2017-02-08 22:10:08 · 142 阅读 · 0 评论 -
1111. Online Map (30)[dijkstra算法]
1. 原题: https://www.patest.cn/contests/pat-a-practise/11112. 思路:题意:给定图含有时间及距离。求单源最短路径。要求:1. 输出距离最短路径。存在多条时,选择时间最短的。2. 输出时间最短的路径。存在多条时,选择结点数最少的。思路:题意不难。显然dijkstra算法。对距离和时间分别dijks原创 2017-02-26 22:43:44 · 241 阅读 · 0 评论 -
1085. Perfect Sequence (25)
1. 原题: https://www.patest.cn/contests/pat-a-practise/10852. 思路:题意:给定一个序列,找出序列中两个元素m和M之间的满足M思路:排序逻辑题。先升序排序,然后利用动态规划的思想遍历即可。即,假设起点第i个位置,i~j之间都满足,j+1不符合。那么求出此时元素个数,i++继续循环处理。注意用long lon原创 2017-02-17 19:53:54 · 155 阅读 · 0 评论 -
1086. Tree Traversals Again (25)[递归+二叉树]
1. 原题: https://www.patest.cn/contests/pat-a-practise/10862. 思路:递归+二叉树的遍历问题题意:用栈模拟树的遍历,输出后序思路:入栈序列其实是二叉树的前序,出栈序列是中序。所以,问题就是利用前序和中序输出后序。显然,用递归处理啦。已AC3. 源码:#include#include#incl原创 2017-02-19 11:13:03 · 993 阅读 · 0 评论 -
1010. Radix (25)
1. 原题: https://www.patest.cn/contests/pat-a-practise/10102. 思路:思路:基本逻辑题,考查细心啊。题意是看是否存在一种进制,让两个数相等。关键是怎么确定进制的上限和下限。显然,下限是从s2字符串中的最大字符+1开始算起,上限是s1表示的十进制数值+1了。那么上限我们从题意无法判断,又可能很大。不能用顺序循环判断,只有原创 2017-01-18 23:59:03 · 202 阅读 · 0 评论 -
1009. Product of Polynomials
1. 原题:https://www.patest.cn/contests/pat-a-practise/10092. 方法思路:思路: 题意是求两多项式的乘积。有多种数据结构,可以用链表,或者STL中的set,map等。然后就是逐项相乘啦。为求算法简便,选用map。3.源代码(已AC)#include#includeusing namespace std;/*原创 2017-01-17 23:12:04 · 214 阅读 · 0 评论 -
1061. Dating (20)
1. 原题: https://www.patest.cn/contests/pat-a-practise/10612. 思路:题意:乙级福尔摩斯约会的英文版。查找相应字符转换成时间。思路:直接循环查找。注意日期的字符是在A~G,小时的是0~9或者A~N;分钟的是A~Z或a~z的位置。3. 源码(已AC):#include#includeusing names原创 2017-02-09 21:17:13 · 158 阅读 · 0 评论 -
1063. Set Similarity (25)
1. 原题: https://www.patest.cn/contests/pat-a-practise/10632. 思路:题意:判断两个数列中的相同元素个数与所有不同元素的比例。思路:数学逻辑题。首先要对读入的数列去重,这样我们想到了用stl中的set或者map。最终两个set中的元素都是不同的,然后遍历其中一个,查看是否在另一个set中存在,记录相同元素个数。最后原创 2017-02-10 16:21:59 · 230 阅读 · 0 评论 -
1062. Talent and Virtue (25)
1. 原题: https://www.patest.cn/contests/pat-a-practise/10622. 思路:题意:结构体的内部排序。思路:排序题。由于是4个部分,所以用了4个vector。注意不要用cin,超时。3. 源码(已AC):#include#include//使用sort函数#includeusing namespace std原创 2017-02-09 22:34:30 · 165 阅读 · 0 评论 -
1115. Counting Nodes in a BST (30)[bst+dfs遍历]
1. 原题: https://www.patest.cn/contests/pat-a-practise/11152. 思路:题意:按照bst的原则构建bst树,然后输出倒数两层的结点数。思路:显然首先递归插入来建树。然后树深可以用bfs或dfs。dfs简捷些,然后递归的时候用一个计数器数组记录层深的结点数和最大树深就好了。已AC。3. 源码:#incl原创 2017-02-28 15:20:45 · 199 阅读 · 0 评论 -
1114. Family Property (25)[并查集]
1. 原题: https://www.patest.cn/contests/pat-a-practise/11142. 思路:题意:找出同一个有关系的家庭里的人数,房产套数及总面积。思路:并查集或者dfs算法。集合问题,并查集优先。我是先把结点进行合并,合并好后按照根结点值升序(因为s[i].parent是负值,绝对值是该集合的人数),同时累计该集合的套数及原创 2017-02-28 11:16:20 · 257 阅读 · 0 评论 -
1011. World Cup Betting (20)
1. 原题: https://www.patest.cn/contests/pat-a-practise/10112. 思路题意是给出三场比赛的胜负平的赔率(题目给出的是1赔几)投入2块(即两倍注),求出最大赢利。基本的I/O问题。有很多方法,数组,模板STL都可以。我定义了一个结构体。注意:最后的结果两位小数,四舍五入。3. 源码(已AC)#include#原创 2017-01-19 22:44:58 · 376 阅读 · 0 评论 -
1064. Complete Binary Search Tree (30)
1. 原题: https://www.patest.cn/contests/pat-a-practise/10642. 思路:题意:给出一个序列,构建出它的完全二叉搜索树, 然后输出层序。思路:BST问题。二叉搜索树的性质,其中序是有序的。完全二叉树的性质,根结点编号i,则左孩子2i, 右孩子2i+1.而且完全二叉树是可以用数组来存储的,正好就是层序序列。原创 2017-02-10 19:41:29 · 207 阅读 · 0 评论 -
1013. Battle Over Cities (25)
1. 原题: https://www.patest.cn/contests/pat-a-practise/10132. 思路:题意是有一个图,某个点抹掉后,求剩下可以构成几个子图,然后减去1就是恢复道路条数。基础算法题。可以用DFS, BFS, 并查集。这里DFS最简单。3. 源码(已AC)#include#include //memset()using nam原创 2017-01-20 23:59:33 · 215 阅读 · 0 评论 -
1012. The Best Rank (25)
1. 原题:https://www.patest.cn/contests/pat-a-practise/10122. 思路:题意是求每个学生的多个成绩的最佳排名。说到这里,有一个巨大的坑,会影响你AC。想起这儿,心都碎了,d了好多次。结果的排名形式是相同成绩排名相同,但不同成绩不是排名的简单递增,而是总人数的排名。比如正确的排名是1,2,2,3,3,6. 而不是“1,2,2,3原创 2017-01-20 22:24:56 · 272 阅读 · 0 评论 -
1014. Waiting in Line (30)
1. 原题: https://www.patest.cn/contests/pat-a-practise/10142. 思路:题意是银行排队问题。考查队列和FCFS(先来先服务).利用STL中的queue, 模拟银行排队,计算顾客的排队窗口和离开时间。3. 源码(已AC)#include#include#includeusing namespace std;c原创 2017-01-21 18:39:48 · 210 阅读 · 0 评论 -
1119. Pre- and Post-order Traversals (30)[二叉树遍历]
1. 原题: https://www.patest.cn/contests/pat-a-practise/11192. 思路:题意:给出前序和后序序列,输出中序序列。若不唯一,输出任意一个即可。思路:二叉树遍历题。类似前序和中序求后序。这里只不过由于前序和后序不能唯一确定一个二叉树。首先,我们要分析为什么不能确定呢。我们知道前序是中左右, 后序是左右中。如果原创 2017-02-28 22:11:04 · 281 阅读 · 0 评论 -
1065. A+B and C (64bit) (20)
1. 原题: https://www.patest.cn/contests/pat-a-practise/10652. 思路:题意:判断数的大小。思路:看到题目的时候,准备用字符串处理了。感觉有点麻烦,看了下其他网友的思路。原来题目是没有考虑最大边界的。那就简单了。64位的长整型范围是-2^63~2^63-1,如果考虑最大边界,只有用字符串判断了。主要是上溢原创 2017-02-10 20:54:44 · 214 阅读 · 0 评论 -
1089. Insert or Merge -25[插入和归并排序]
1. 原题: https://www.patest.cn/contests/pat-a-practise/10892. 思路:题意:插入与归并排序问题。思路:插入排序是前i个元素有序,后面的和原序列一致。归并是每k个元素内部有序。有多种方法。若是插入,则直接对i+1个进行排序就好了。归并的话,可以求出目前的归并段k是几,再归并一次就好了。也可以对原序原创 2017-02-21 14:44:50 · 478 阅读 · 0 评论 -
1067. Sort with Swap(0,*) (25)
1. 原题: https://www.patest.cn/contests/pat-a-practise/10672. 思路:题意:交换排序,不过每次只能和元素交换,输出最少交换次数。思路:如何交换才能最少?显然,如果每次交换把一个元素换到正确位置,最终次数就是最少。通过样例二,我们发现,当把0换到位置0时,还有元素未在正确位置,此时,需要把0和未在正确位置的元素互原创 2017-02-12 16:12:26 · 225 阅读 · 0 评论 -
1066. Root of AVL Tree (25)
1. 原题: https://www.patest.cn/contests/pat-a-practise/10662.思路:题意:构建AVL树。思路:AVL算法题。直接读入数据,然后插入树,并调整3.源码(已AC):#include#include//使用max函数using namespace std;struct Node//二叉树结点{ Node(原创 2017-02-10 23:33:45 · 152 阅读 · 0 评论 -
1090. Highest Price in Supply Chain (25)[dfs树的遍历]
1. 原题: https://www.patest.cn/contests/pat-a-practise/10902. 思路:题意:给出一颗树,求出树的最大层次及同层的结点数。思路:显然可以用dfs,每次递归,层次加1.也可用bfs.为求简便,用dfs。已AC3. 源码:#include#include#include//使用pow函数,用来求指数原创 2017-02-21 15:16:37 · 308 阅读 · 0 评论 -
1068. Find More Coins (30)
1. 原题: https://www.patest.cn/contests/pat-a-practise/10682. 思路:题意:根据给定金额,从硬币中选出最小的硬币组合。思路:01背包问题。当然可以用bfs+剪枝,不过没有dp简捷些。01背包不熟悉的,可以参考这里: 状态转移方程:dp[i][j] = max(dp[i-1][j], dp[i-1][j - v[i原创 2017-02-13 13:50:46 · 182 阅读 · 0 评论