
PAT甲级
youth.lin
a tyro at CS and NLP.
展开
-
PAT 1007 Maximum Subsequence Sum(最大子串和)
原题地址https://www.patest.cn/contests/pat-a-practise/1007 求出给定数字串的最大子串和,以及这个最大子串和的首尾元素。(若有多个最大子串则取最靠左的那个)解题思路本题基本上是最大子串和的裸题,只是增加了一个输出首尾元素的要求。最大子串和描述:输入一个整数序列,求出其中连续子序列和的最大值。最大子串和几种解法:复杂度O(n^3):穷举所有可能原创 2017-05-10 19:03:21 · 1542 阅读 · 0 评论 -
PAT 1023 Have Fun with Numbers(简单计数+大整数)
题目https://www.patest.cn/contests/pat-a-practise/1023 题意:输入一串不超过20位的数字,将该数字串乘以两倍后,判断新数串是否为原数串的一个排列。解题思路统计旧字符串中数字0-9的出现次数和新字符串中数字0-9的出现次数,若两者完全相同,则新数串是原数串的一个排列。AC代码#include <iostream>#include <cstrin原创 2017-06-16 15:19:02 · 275 阅读 · 0 评论 -
PAT 1024 Palindromic Number (大整数相加)
题目https://www.patest.cn/contests/pat-a-practise/1024 已知非回文串可以通过不断和自身逆序相加来得到回文串,称为一次操作,如67+76=143+341=484的操作次数为2。给定一个正数N和操作的最大次数,判断该数串在最大操作次数内能否得到回文串。解题思路由于N最大可以为10^10,操作次数最多可以为100次,所以数字长度会很长,在long l原创 2017-06-16 17:03:52 · 449 阅读 · 0 评论 -
PAT 1025 PAT Ranking(双重排序)
题目https://www.patest.cn/contests/pat-a-practise/1025 题意:给出每个考场中每个学生的成绩,求所有学生的总排名以及所在考场内的分排名。注意,同分的学生排名相同,其后的学生排名后推。解题思路简单的排序题,用结构体保存每个学生的所有信息。先对分数局部排序,再整体排序即可。需要注意的是排名的值,与前一个学生同分的时候排名相同,否则排名为比该学生分数高原创 2017-06-16 19:48:14 · 1115 阅读 · 0 评论 -
PAT 1029 Median(中位数+归并排序)
题目https://www.patest.cn/contests/pat-a-practise/1029 题意:求两个排好序的数组合并后的中位数。解题思路担心直接sort会超时,所以拿归并排序的merge方法合并数组,即从每次都从两个数组剩余的元素中挑出最小的,若某个数组先挑完,则另一个数组原样抄回。然而,sort也能过……(摊手)AC代码#include <iostream>using n原创 2017-06-16 22:41:00 · 827 阅读 · 0 评论 -
PAT 1018 Public Bike Management(最短路径+DFS)
题目 https://www.patest.cn/contests/pat-a-practise/1018 题意:自行车管理中心PBMC监控所有站点的实时自行车量,每个站点的最大容纳量都是Cmax,最优状态为Cmax/2。当一个站点为Empty或者Full的时候会向PBMC报告,这时候PBMC需要选择一条到达该站点耗时最短的路径,并且将沿路经过的站点都调整为最优状态。求解这些最短路径中原创 2017-06-06 10:20:04 · 508 阅读 · 0 评论 -
PAT 1019 General Palindromic Number(进制水题)
题目https://www.patest.cn/contests/pat-a-practise/1019 题意:判断将数字N转换到base进制下以后是否满足回文。解题思路进制转换的水题,只需模拟短除法将n转换到base进制下,每次短除法的余数都push到vector里,判断vector中对应位置的元素是否相同。判断回文的方法是两端的下标从首尾往中间走。刚开始由于循环条件写成了 i != las原创 2017-06-06 22:16:42 · 474 阅读 · 0 评论 -
PAT 1020 Tree Traversals(树重建+BFS)
题目https://www.patest.cn/contests/pat-a-practise/1020 题意:给定二叉树的后序、中序遍历结果,输出其层次遍历结果解题思路首先重建树,关于利用含中序的两种序列构建这棵二叉树,详见之前的博客二叉树遍历(已知前中序求后序),最后根据这棵树的层次做输出,一遍BFS就可以解决。AC代码#include <iostream>#include <queue原创 2017-06-06 23:23:32 · 296 阅读 · 0 评论 -
PAT 1034 Head of a Gang(图遍历+BFS)
题目https://www.patest.cn/contests/pat-a-practise/1034 题意:给出1000条以内的通话记录A B和权值w,如果一个团伙人数超过2人并且通话总权值超过阈值k,令团伙里面的自身权值的最大值为头目,输出所有满足条件的团伙的头目,和他们团伙里面的人数。解题思路数据结构邻接表存放图的邻接关系,weight数组存放节点权重邻接节点 = 它通话过的所有节点原创 2017-06-29 11:55:17 · 348 阅读 · 0 评论 -
PAT 1079 Total Sales of Supply Chain(树遍历+BFS)
题目https://www.patest.cn/contests/pat-a-practise/1079 题意:将零售商-经销商-供应商这条链抽象为一棵树;供应商作为根节点,出货物的价格为p,然后从根结点开始每往下走一层,该层的货物价格将会在父亲结点的价格上增加r%,给出每个叶结点(即零售商)的货物量,求他们的价格之和。解题思路供应商-经销商-零售商三者的关系可以看作是树的根节点-内部节点-叶原创 2017-06-29 15:34:23 · 389 阅读 · 0 评论 -
PAT 1030 Travel Plan(单源最短路径+优化Dijkstra)
题目https://www.patest.cn/contests/pat-a-practise/1030 题意:给出每座城市之间高速公路的长度和花费,求从给定起点到终点的最短路径并输出,若有多条最短路径,记录花费最小的那条。解题思路本题是单源最短路径的简单变形。不仅要考虑距离,还要考虑花费。关于单源最短路径,详见之前的一篇博客:PAT 1003 Emergency(单源最短路径+Dijkstr原创 2017-06-17 19:48:19 · 327 阅读 · 0 评论 -
PAT 1032 Sharing(哈希)
题目https://www.patest.cn/contests/pat-a-practise/1032 求两个链表的首个共同结点的地址。如果没有公共节点则输出-1。解题思路总体思想就是都地址哈希,由于不要求输出字符,所以不需要结构体。刚开始想法是统计地址出现的次数,而不去遍历后来形成的链表,出现次数为3的地址即公共节点地址(也可能是首个地址则次数为2),但是尝试了很久都无法通过测试3和测试5原创 2017-06-20 22:36:38 · 442 阅读 · 1 评论 -
PAT 1021 Deepest Root(树的直径+BFS+并查集)
题目https://www.patest.cn/contests/pat-a-practise/1021 题意:给出一张图,判断该图能否形成一棵树,若能则求出树的最长简单路(树的直径),否则求出连通分量的个数。解题思路本题是树的直径+并查集的应用,似乎是某C9的机试题之一。解决这道题的整体思路是: 1. 先通过并查集判断连通分量的个数,若连通分量只有1个就说明不存在森林; 2. 对剩下原创 2017-06-16 14:29:44 · 395 阅读 · 0 评论 -
PAT 1006 Sign In and Sign Out(简单排序)
原题地址https://www.patest.cn/contests/pat-a-practise/1006 题意:给出每个职员进入公司和离开公司的时间,筛选出最早开门和最迟关门的职员编号。解题思路在结构体中用六个整数分别存放入、出时间的整数值即HH:MM:SS(用控制位宽的方式读入),再对入、出时间分别做排序即可。AC代码#include <iostream>#include <cstdi原创 2017-05-10 16:20:19 · 411 阅读 · 0 评论 -
PAT 1005 Spell It Right(简单输出)
原题地址https://www.patest.cn/contests/pat-a-practise/1005 以英文单词形式,输出长整数的各数位之和的每一位。解题思路对输入的每一位累加后,用常量字符串数组控制sum的每一位输出即可。AC代码#include <iostream>#include <cstring>using namespace std;const int maxn = 1原创 2017-05-10 16:02:50 · 333 阅读 · 3 评论 -
PAT 1008 Elevator(水题)
原题地址https://www.patest.cn/contests/pat-a-practise/1008 题意:给出一组电梯调度的序列,已知上升一层耗时6秒,下降一层耗时4秒,每次停留5秒,求总耗时。解题思路觉得不应该放在PAT甲级题目里,因为实在没有看到考点。直接模拟计数就可以了。AC代码#include <iostream>using namespace std;int main()原创 2017-05-10 19:33:20 · 361 阅读 · 0 评论 -
PAT 1009 Product of Polynomials(简单计数)
原题地址https://www.patest.cn/contests/pat-a-practise/1009 遵循多项式相乘规则,求多项式a+b的乘积。解题思路模拟多项式相乘的过程,需要注意不能用判断是否poly[i]为0来判断i是否在A中出现过,因为poly[i]的值有可能是由之前的相乘产生的,所以标明哪些数在A中出现过,而且用第二个数组存放解。AC代码#include <iostream>原创 2017-05-10 20:16:04 · 459 阅读 · 0 评论 -
PAT 1013 Battle Over Cities(并查集的应用)
题意https://www.patest.cn/contests/pat-a-practise/1013解题思路刚开始的思路是,通过判断去除顶点的度和它所连接顶点是不是只依赖于它,来做统计。但是举了几个复杂例子后抛弃了用顶点的度做简单运算的想法,而是判断去除顶点后剩余的连通分量有多少个。既然是连通分量,那先考虑的就是并查集了。具体实现上,对于每个查询的顶点stop,为这张图构造去除它之后的所有连通分原创 2017-05-27 00:01:59 · 501 阅读 · 0 评论 -
PAT 1014 Waiting in Line(模拟+队列操作)
题目https://www.patest.cn/contests/pat-a-practise/1014 银行前台处理客户的过程如下,有n个窗口,每个窗口前的队伍可以排m个人,其余人在黄线外等待;每当有人处理完毕时,黄线外的人找最短的、序号最小队伍插入;求每个人的结束时间。解题思路本题是明显的队列的模拟题,遗憾的是改了好久代码只过了四组,最后一组依然是段错误,虽然还不知道什么原因:(,看了一下原创 2017-05-28 10:31:31 · 820 阅读 · 0 评论 -
PAT 1010 Radix(大进制转换+二分查找+剪枝)
原题地址https://www.patest.cn/contests/pat-a-practise/1010 给定一个数字a及其进制,判断另一个数b是不是a在其他进制下的表示。(a,b较大,以字符串形式给出)解题思路本题考察进制转换,但是和之前做过的一次性转换题都不太一样,即要求搜索出满足b.value = a.value时b的进制数。 判断两进制数是否相等的基本思路:两个数都用10进制表原创 2017-05-17 23:24:13 · 458 阅读 · 0 评论 -
PAT 1015 Reversible Primes(进制转换+素数)
题目https://www.patest.cn/contests/pat-a-practise/1015 题意:若n为素数,且n在某个数字系统中的表示串的倒置也为素数,则称n满足可逆素数。例如,23是素数,且23在2进制下的表示10111的倒置11101即29也为素数,则23是可逆素数。给出十进制数n和目标进制d,判断n是否满足条件。解题思路本题思路非常简单,只需要先将n转到d进制下的表示s,原创 2017-05-28 16:49:45 · 485 阅读 · 0 评论 -
PAT 1016(排序+模拟)
题目https://www.patest.cn/contests/pat-a-practise/1016 给出一份通话记录流水账,每条记录都标记客户姓名,是开始还是结束拨打,以及对应的时间(月日小时分),统计每个人的账单,按要求输出。解题思路这实在是一道复杂的模拟题,要求的输出格式也是真的烦,不涉及到任何算法,纯粹要做好统计工作。题目重点首先划一下题目中的重点(ง •_•)ง:【a long原创 2017-05-29 15:27:35 · 660 阅读 · 2 评论 -
PAT 1004 Counting Leaves(BFS+模拟树)
原题地址https://www.patest.cn/contests/pat-a-practise/1004 题意:一棵有N个结点的树,其中有M个结点是非叶子结点,给出每个非叶子结点的孩子结点编号,求出每一层上的非叶子结点个数。解题思路本题考察树的结构,这种看似树结构,但用数字编号表示节点的题目,经常可以用数组模拟,无需构造出一棵树。数据结构: 注意到结点编号最多为两位,因此100以内的原创 2017-05-10 12:28:12 · 434 阅读 · 0 评论 -
PAT 1012 The Best Rank(简单统计)
原题https://www.patest.cn/contests/pat-a-practise/1012 给出每个学生在三门科目中的成绩(可以计算出平均分),求每个学生的最高排名和对应科目(三门科目or平均分的排名)解题思路刚开始看题以为需要排序来做,但是由于四门科目都要统计排名,因此用排序来做反而增加了复杂度,所以下面的遍历都是最粗暴的查找。数据结构:为每个学生构造结构体,记录id、这四门科原创 2017-05-18 22:16:28 · 606 阅读 · 1 评论 -
PAT 1001 A+B Format(格式化输出)
原题地址https://www.patest.cn/contests/pat-a-practise/1001 输出标准化后的a+b,标准化是指每3个数位之间有一个逗号分隔。如-1000000+9 = -999,991。解题思路控制输出格式的水题,用变量comma控制以3为周期的逗号加入。注意数值的正负,以及避免开头输出逗号。AC代码#include <iostream>#include <c原创 2017-05-10 15:41:47 · 908 阅读 · 0 评论 -
PAT 1002 A+B for Polynomials(简单计数)
原题地址https://www.patest.cn/contests/pat-a-practise/1002 给出两个多项式的指数和系数(没有给出基数),将指数相同的多项式进行系数相加并输出每一项的系数和指数。 如a=2.4x1+3.2x0,b=1.5x2+0.5x1,因此a+b = 1.5x2+2.9x1+3.2x0 解题思路用数组poly[exp]表示指数为exp的项前面的系数,输入原创 2017-05-10 15:42:48 · 234 阅读 · 0 评论 -
PAT 1003 Emergency(单源最短路径+Dijkstra)
原题地址https://www.patest.cn/contests/pat-a-practise/1003 题意:给定N个城市以及M条城市之间的道路,每座城市有自己的权重city[i],每条道路也有自己的权重cost[i][j],求源顶点v0到目标顶点vt的最短路径的数量,以及沿着最短路径的累加顶点权重的最大值。解题思路本题是单源最短路径的变形题,寻找单源最短路径一般用Dijkstra算法就原创 2017-05-07 13:55:11 · 1435 阅读 · 3 评论