- 博客(23)
- 资源 (1)
- 收藏
- 关注
原创 PAT1113 求数集合之差
题意:给一组数字,求两个集合,要求集合中的数字量差最少, 但数字总和的差最大。思路:很显然就是排序,然后取前半段和后半段即可了!数字量差要么是0要么是1.#include#include#include#include#include#include#include#include#includeusing namespace std;#define INF 9
2017-06-30 17:25:58 293
原创 PAT 1054 求数组中数量超过一半的数字
题意:给一组数字,求其中数量超过数组一半的数字。思路:由于数字的最大值为2^24,故无法开数组来存。所以可以用哈希。但哈希小题大做了,这题的特性是“数量超过一半”根据剑指offer里的题,我们知道既然超过一半,那么维持一个当前颜色c,每当颜色相同,颜色数量+1,颜色不同,数量-1。而因为答案的数量超过一半,故维持到最后,当前颜色c一定是他。#include#include
2017-06-30 12:05:25 226
原创 PAT 1004 求各层次叶子节点的数量
题意:给一个树,求各层次的叶子节点数量思路: 直接通过叶子节点向上遍历,数出他是第几层,然后对应层的叶子数量加1.注意要去一下最大层的层数。还有就是只有1个根节点的话,不视作叶子节点。#include#include#include#include#include#include#include#include#includeusing namespace s
2017-06-29 22:44:09 338
原创 PAT1102 树的翻转
题意: 将一颗树翻转。并求水平序列和中序序列。翻转用递归求就行了。还有就是求根节点,根节点不是任何节点的孩子,通过这个可知哪个是根节点。#include#include#include#include#include#include#include#include#includeusing namespace std;#define INF 9999999
2017-06-29 12:57:28 269
原创 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 349
原创 pat 1066 二叉平衡树求根节点
给出插入顺序,求二叉平衡树的根节点值用以前写的模板直接套用即可了。#include#include#include#include#include#include#include#include#includeusing namespace std;#define INF 99999999#define M 1000#define LH +1#define
2017-06-27 16:22:45 336
原创 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 278
原创 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 380
原创 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 257
原创 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 340
原创 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 194
原创 pat1084 哈希判断
题意:键盘上有些按键坏了,导致句子里很多字母打不出来。求这些坏了的键。注意点:要用大写每个字母只输出一次,故用哈希或者数组标记即可。#include#include#include#include#include#include#include#include#includeusing namespace std;#define INF 99
2017-06-20 22:06:17 346
原创 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 188
原创 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 252
原创 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 208
原创 PAT 1094. The Largest Generation 用数组确定父亲,向上遍历确定相互联系
题意:给了你一个家庭族谱,告诉你每个人的儿女分别是谁。问哪一代人人数最多,并求出这一代人的数量。思路:并查集的核心在于并和查,但由于N仅仅为100,且族谱成树状关系,故无需使用并查集来求解,直接暴力即可。用father[]确定每个人的父亲,通过每次向上搜 得知 自己是第几代, 以次方法遍历即可。由于为N,最坏结果复杂度为N^2,而N仅为100,故直接利用该方法
2017-06-16 21:05:53 233
原创 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 239
原创 PAT 1003. Emergency Dijkstra变形+求相等最短路的数量+特殊权重
题意:一个无向图,除了每条路的长度外,每个城市都有个“救援队数量”。求出相同长度的最短路有多少条。并求出在这些最短路中, 救援队数量最大的总和。思路:用dijkstra,进行一些变形,有些点必须要注意:(1)最短路条数当在松弛操作中 “更新”了 长度时, 其j的最短路条数等于 select最短路条数 。而当长度相等时,注意,j的最短路长度等于 j的最短路
2017-06-05 11:50:26 300
原创 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 253
原创 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 264
原创 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 318
原创 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 270
原创 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 232
unp.h源码(CentOS上可无错编译)
2018-01-17
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人