
PAT
文章平均质量分 71
DrawnBreak
这个作者很懒,什么都没留下…
展开
-
PAT:1008 Elevator
题意:给出电梯要到达的层号,上升一层要花6秒,下降要花4秒,在每次到达某层时停留5秒,求总共所花时间。电梯初始为0层。注意点:注意判断下降时, 差值是负的, 需要先改为正数。每次更新"上一层层号“#include#include#include#includeusing namespace std;#define inf 0x3f3f3f3f#d原创 2017-05-29 21:52:25 · 260 阅读 · 0 评论 -
PAT 1051 pop Sequence
用时:23分20秒题意:给出一个栈,栈的容量为m, 有n个入栈的数字1~n, 判断出栈序列是否正确注意点:1. 当说num出栈时,将上次入栈数 到 num 依次入栈。再判断栈顶是否正确2.入栈后必须判断栈容量。3.出栈时必须判断栈是否为空。//628K 94MS#include#include#include#include#inclu原创 2017-05-29 22:30:47 · 234 阅读 · 0 评论 -
PAT 1064 Complete Binary Search Tree
题意: 给出一串数字,求这些数组组成的完全2叉树思路和注意点:1.完全2叉树,一般可以利用数组, 当完全二叉树中有n个数字,则数组长度为n。例如当前数组下标为node,则node*2是左节点,node*2+1是右节点。2.数组下标表示的二叉树是1~n,而非0~n3.当树中的数字确定时,完全二叉树就确定了,和给出数字的顺序无关!4.用中序遍历一步步将数组中的数字存入。原创 2017-05-29 23:21:33 · 234 阅读 · 0 评论 -
PAT 1099 Build A Binary Search Tree
题意:依次给出各点的左右孩子结点号, 接着再往其中存入一组数字。要求构成二叉搜索树。注意点:1. 理解题目含义。 构建树时,给的输入是0~n各点各自的左右孩子,而非我之前理解的用先序遍历存入的孩子信息。2. 注意加上-1的判断。//628K 94MS#include#include#include#include#include#include#i原创 2017-05-30 13:44:42 · 209 阅读 · 0 评论 -
PAT 1027. Colors in Mars
题意: 给出 红 绿 蓝 三个颜色的值,把这3个值分别转成13进制并一起输出注意点:很简单的转换。注意 168 0 1的转换为 CC0001即可。//628K 94MS#include#include#include#include#include#include#includeusing namespace std;#define inf 0x3f3f3原创 2017-05-30 19:34:47 · 240 阅读 · 0 评论 -
PAT 108
题意:好理解,给出学生信息,筛选符合成绩范围的学生,并用降序表示。注意点:主要在于要排序。这里我用一下优先队列。priority_queue q;同时要在结构体中重载运算符struct student{ string name, id; int grade; bool operator < (student a) const {原创 2017-05-30 22:23:03 · 234 阅读 · 0 评论 -
PAT 1020. Tree Traversals (25)
题意:给出后序和中序遍历,求水平序列。思路:用递归做,注意root要事先建立。还有就是递归处的边界选择。#include#include#include#include#include#include#include#include#includeusing namespace std;#define INF 99999999#define M 300struc原创 2017-06-16 22:31:04 · 227 阅读 · 0 评论 -
1092. To Buy or Not to Buy
题意: 商家只卖第一串买家是第二串问买家需要的珠子在第一串中满不满足。若满足,看看多买了多少珠子。否则看看缺了哪些思路:太简单,哈希表都不需要用,直接用数组#include#include#include#include#include#include#include#include#includeusing namespace std;#def原创 2017-06-06 16:16:29 · 257 阅读 · 0 评论 -
PAT 1036
题意:给一组学生成绩,求最高分的女生和最低分的男生,并求该分差注意点1.若最高分或最低分有多个人,则输出absent和NA!n = input()maleg = 101femaleg = -1for i in range(0,n): sinfo = raw_input() name,sex,ID,grade = sinfo.split()原创 2017-06-17 21:43:14 · 274 阅读 · 0 评论 -
PAT 1011::World Cup Betting (20)
题意:找出3个赔率最大的浮点数f1 f2 f3, 收益等于 (f1*f2*f2*0.65-1)*2 思路:题目很简单,但是要注意 PAT中的用例有错,结果是37.97而不是37.98。(也可能是IDE的问题?)//628K 94MS#include#include#include#include#include#include#include#inc原创 2017-06-02 22:45:16 · 250 阅读 · 0 评论 -
PAT1006 Sign In and Sign Out
题意: 找到今天第一个出门的人和最后一个进门的人。思路:主要在于处理字符串。这里我试着用python求了一下。n = raw_input()outtmin = 999999intmax = -1 for i in range(0,int(n)): string=raw_input() s = string.split() sid = s[0]原创 2017-06-02 23:15:12 · 291 阅读 · 0 评论 -
PAT 1031:Hello World for U
题意:把字符串变成U型,左边n1个,右边n3个,底部n2个。主要是理解这一句: n1 = n3 = max { k| k 2 for all 3 2 <= N } with n1 + n2 + n3 - 2 = N.这句话的意思是1. n1等于n3, 2. 对于3n1 + n2 + n3 - 2 = N3.从kn1而n原创 2017-06-03 18:27:03 · 336 阅读 · 0 评论 -
PAT 1042. Shuffling Machine (20)
题意:根据一个特定的洗牌序列,对一副牌洗n次,求洗完牌后的牌序注意点:水题,但是要注意 输入的序列是1~54,而我们数组的下标是0~53!#include#include#include#include#include#include#include#include#includeusing namespace std;#define INF 99999999原创 2017-06-19 22:13:40 · 213 阅读 · 0 评论 -
PAT1102 树的翻转
题意: 将一颗树翻转。并求水平序列和中序序列。翻转用递归求就行了。还有就是求根节点,根节点不是任何节点的孩子,通过这个可知哪个是根节点。#include#include#include#include#include#include#include#include#includeusing namespace std;#define INF 9999999原创 2017-06-29 12:57:28 · 289 阅读 · 0 评论 -
PAT 1004 求各层次叶子节点的数量
题意:给一个树,求各层次的叶子节点数量思路: 直接通过叶子节点向上遍历,数出他是第几层,然后对应层的叶子数量加1.注意要去一下最大层的层数。还有就是只有1个根节点的话,不视作叶子节点。#include#include#include#include#include#include#include#include#includeusing namespace s原创 2017-06-29 22:44:09 · 358 阅读 · 0 评论 -
PAT 1054 求数组中数量超过一半的数字
题意:给一组数字,求其中数量超过数组一半的数字。思路:由于数字的最大值为2^24,故无法开数组来存。所以可以用哈希。但哈希小题大做了,这题的特性是“数量超过一半”根据剑指offer里的题,我们知道既然超过一半,那么维持一个当前颜色c,每当颜色相同,颜色数量+1,颜色不同,数量-1。而因为答案的数量超过一半,故维持到最后,当前颜色c一定是他。#include#include原创 2017-06-30 12:05:25 · 242 阅读 · 0 评论 -
PAT1113 求数集合之差
题意:给一组数字,求两个集合,要求集合中的数字量差最少, 但数字总和的差最大。思路:很显然就是排序,然后取前半段和后半段即可了!数字量差要么是0要么是1.#include#include#include#include#include#include#include#include#includeusing namespace std;#define INF 9原创 2017-06-30 17:25:58 · 310 阅读 · 0 评论 -
PAT1120
题意很简单, 给出一堆数字,求每个数字各位相加的和, 从小到大。直接用一个位图即数组输出即可。#include#include#include#include#include#include#include#include#includeusing namespace std;#define INF 99999999#define M 10004int nu原创 2017-07-01 17:05:46 · 275 阅读 · 0 评论 -
PAT 1058 简单输入数学题
题意:就是考察3个不同进制的加法写的时候不要写错即可#include#include#include#include#include#include#include#include#includeusing namespace std;#define INF 99999999#define M 300//start 16:41//end 16:52原创 2017-06-22 17:02:00 · 357 阅读 · 0 评论 -
PAT1005 Spell It Right 大水题
题意就是把数字的每一位加起来,得到一个和,这个和的每一位用英文输出。。注意0输出zero就是了。#include#include#include#include#include#include#include#include#includeusing namespace std;#define INF 99999999#define M 10004int num[M];原创 2017-07-02 11:32:22 · 269 阅读 · 0 评论 -
PAT 1059 吃老鼠晋级赛
题意:有n个程序,要比赛吃老鼠,但是要分组比。每次小组胜利的晋级下一次比赛,直到分出第一名为止。主要是理解输入第一行是比赛程序的数量,和 每个小组的成员数。第二行是每个程序能够吃的老鼠数量。第三行是将这些程序排了个队,从左到右依次站好,按照顺序一个个分组,比赛。例如例子里的第三行为6 0 8 7 10 5 8 1 4 2 3则分为了(6 0 8) (7 10 5)原创 2017-06-23 22:07:23 · 278 阅读 · 0 评论 -
1050. String Subtraction 字符串相减
题意:给出s1和s2, 求s1-s2,即s2中出现的字符,s1中都不能出现,包括“空格”!故s1和s2都需要读入空格,故用getline(cin,s)来读入string。#include#include#include#include#include#include#include#include#includeusing namespace std;#define原创 2017-06-25 01:04:33 · 396 阅读 · 0 评论 -
PAT 1040 求最长回文子串
题意:求最长回文子串思路:用dp, dp[left][right] 代表了从left到right这个子串是不是回文子串。 利用这个状态能节省很多重复判断。#include#include#include#include#include#include#include#include#includeusing namespace std;#define INF 9原创 2017-06-28 11:23:20 · 361 阅读 · 0 评论 -
PAT 1041 哈希,map用法
题意:找到第一个只出现一次的数字思路:用map,遍历两次即可。这里注意一下map的用法://声明map hmap;//查找if(hmap.find(num[i]) != hmap.end())//插入新键值hmap.insert(pair(num[i], 1));//使用值hmap[1]//628K 94MS#include#include#inc原创 2017-06-03 19:16:36 · 281 阅读 · 0 评论 -
PAT 1030 Travel Plan dijkstra算法+双最短条件+保存最短路
题意:给出一个无向图。求出起点到终点的最优路,并输出所经过的点。最优: 距离最短,若距离相等则权重最短。思路:1.注意这是个无向图!!2.用vector存储经过的点。记得起点也要存储。//628K 94MS#include#include#include#include#include#include#include#include#include原创 2017-06-03 20:19:47 · 268 阅读 · 0 评论 -
PAT 1003. Emergency Dijkstra变形+求相等最短路的数量+特殊权重
题意:一个无向图,除了每条路的长度外,每个城市都有个“救援队数量”。求出相同长度的最短路有多少条。并求出在这些最短路中, 救援队数量最大的总和。思路:用dijkstra,进行一些变形,有些点必须要注意:(1)最短路条数当在松弛操作中 “更新”了 长度时, 其j的最短路条数等于 select最短路条数 。而当长度相等时,注意,j的最短路长度等于 j的最短路原创 2017-06-05 11:50:26 · 317 阅读 · 0 评论 -
PAT 1094. The Largest Generation 用数组确定父亲,向上遍历确定相互联系
题意:给了你一个家庭族谱,告诉你每个人的儿女分别是谁。问哪一代人人数最多,并求出这一代人的数量。思路:并查集的核心在于并和查,但由于N仅仅为100,且族谱成树状关系,故无需使用并查集来求解,直接暴力即可。用father[]确定每个人的父亲,通过每次向上搜 得知 自己是第几代, 以次方法遍历即可。由于为N,最坏结果复杂度为N^2,而N仅为100,故直接利用该方法原创 2017-06-16 21:05:53 · 249 阅读 · 0 评论 -
PAT 1111. Online Map (30) dijkstra算法+双条件判断+节点输出
#include#include#include#include#include#include#include#include#includeusing namespace std;//90min//耗时于程序编写、改bug/*************************题意:给出1个图,每条边有对应的距离d和时间t。①原创 2017-09-14 22:06:08 · 315 阅读 · 0 评论 -
pat1084 哈希判断
题意:键盘上有些按键坏了,导致句子里很多字母打不出来。求这些坏了的键。注意点:要用大写每个字母只输出一次,故用哈希或者数组标记即可。#include#include#include#include#include#include#include#include#includeusing namespace std;#define INF 99原创 2017-06-20 22:06:17 · 361 阅读 · 0 评论 -
pat-1086. Tree Traversals Again 树的构建
1086. Tree Traversals Again (25)时间限制200 ms内存限制65536 kB代码长度限制16000 B判题程序Standard作者CHEN, YueAn inorder binary tree traversal can原创 2017-06-21 23:52:29 · 211 阅读 · 0 评论 -
pat 1053 Path of Equal Weight 树的路径求和,数组排序,father[]用法
题意:给出一个树的结构,每个节点有个权值,求从根到叶子节点, 总和为s的所有路径。思路:直接用father来存储树结构了, 从每个叶子节点不断向上回溯到根节点,即可找到所有和为s路径。这样得到的是反的序列,故用 reverse(pathv.begin(),pathv.end()); 进行vector翻转。确定输出顺序时,要进行sort,cmp函数如下:bool原创 2017-06-25 18:04:58 · 302 阅读 · 0 评论 -
PAT 1055. The World's Richest (25) 年龄排序问题(O(n)排序)
#include#include#include#include#include#include#include#include#includeusing namespace std;//100min//耗时于思路、重制代码,大部分时间用于提高算法效率/***************************题意:给出一堆富豪(10^6个)原创 2017-09-12 23:27:56 · 257 阅读 · 0 评论 -
1128. N Queens Puzzle (20) n皇后站位问题——对角线坐标判断
#include#include#include#include#include#include#include#include#includeusing namespace std;//21min//耗时于思路/*************************题意:给出n皇后的站位,判断站位是否不冲突。*************************//*原创 2017-09-15 13:14:12 · 1175 阅读 · 0 评论 -
PAT 1129. Recommendation System (25) 优先队列--维持前k个最大堆
#include#include#include#include#include#include#include#include#includeusing namespace std;//70min//耗时于修改bug/*************************题意:每当购买1个商品序号时,推荐k个商品,推荐要求为:之前购买商品数量最大若数量相等,选择序号最原创 2017-09-15 15:07:52 · 326 阅读 · 0 评论 -
PAT 1130. Infix Expression (25) 前缀表达式、树的中序遍历
#include#include#include#include#include#include#include#include#includeusing namespace std;//30min//耗时于思考和编写程序/*************************题意:给出一个前缀表达式树结构,求该表达式并加上括号叶结点为运算数非叶节点为运算符*****原创 2017-09-15 15:46:05 · 338 阅读 · 0 评论 -
PAT 1119. Pre- and Post-order Traversals (30) 用前序、后序求中序
// VSPAT.cpp : 定义控制台应用程序的入口点。//#include#include#include#include#include#include#include#include#include#includeusing namespace std;//70min//耗时于思考和改bug/*************************题意:给出原创 2017-09-16 10:25:04 · 477 阅读 · 0 评论 -
PAT1104. Sum of Number Segments (20) double计算和整数溢出
#include#include#include#include#includeusing namespace std;//19min//耗时于改bug/*************************题意:给出一串数字,求所有连续序列的数字之和*************************//************************求解要点:对于原创 2017-09-16 13:35:44 · 285 阅读 · 0 评论 -
PAT 1105. Spiral Matrix (25) 螺旋矩阵,二维数组的一维应用及边界模拟
#include#include#include#include#include#includeusing namespace std;//60min//耗时于改bug/*************************题意:给一个序列求螺旋矩阵。。常见模拟题矩阵的行列相差最小,相加为N*************************//***********原创 2017-09-16 14:46:53 · 321 阅读 · 0 评论 -
PAT 1106. Lowest Price in Supply Chain (25) 单入度树 + 求叶子到树的距离+反向递归
#include#include#include#include#include#includeusing namespace std;//60min//耗时于思考,想出思路后很简单。/*************************题意:给出一个树形供应链,求叶子节点到根节点的最小最短距离且每个点只有一个入度,即只有一个供应商。******************原创 2017-09-16 16:40:22 · 235 阅读 · 0 评论 -
PAT 1107. Social Clusters (30) 特殊问题+并查集+数量信息并查集
#include#include#include#include#include#includeusing namespace std;//37min//耗时于思考和编码/*************************题意:每个人有k个习惯只要有相同习惯的人就会被分到一个群组中。【即若3号有A和B习惯,4号有B和C习惯则3和4号被分到同一组若5号有C和D习惯原创 2017-09-16 17:35:45 · 252 阅读 · 0 评论