pat
CSlerner
这个作者很懒,什么都没留下…
展开
-
考研期间复习时间记录
目录总时间单科时间考研时间每月用时每周用时每日用时408时间每月用时每周用时每日用时数学用时每月用时每周用时pat用时每月用时每周用时每日用时英语时间每月时间每周时间每日时间政治时间每月时间每周时间每日时间总时间单科时间考研时间每月用时每周用时每日用时408时间每月用时每周用时每日用时数学用时每月用时每周用时..原创 2020-05-16 00:50:35 · 4728 阅读 · 7 评论 -
pat易错点
1.输入的数据全部接收。否则,比如多组数据,你上一组数据提前跳出,但是等下一组开始的时候,它还是会输入,那么下一组数据就错乱了。建议尽量每组数据接收在容器里。然后再处理,最好不要边接收,边处理。2递归的时候要注意退出的条件。还有数组便利的时候要注意别越界。3.pat上的输入要全部接住,虽然可能提前得到答案。但是最好等它数据接收完。因为可能是多组数据。你这一组数据没有全部接收,可能就会留在下...原创 2020-03-03 13:46:59 · 470 阅读 · 0 评论 -
PAT a1117
目的:找到E数输入:N 连续骑车的天数N个每天骑行时间的序列输出输出EE为最大的E,至少E天骑行超过E小时算法:要找到一个最大的时间E,在骑行超过这个时间里面骑行的天数是超过E天的。也就是找到最小的E,骑行超过E小时的天数是不到E天的。用二分法#include<stdio.h>const int maxn = 100010;int num[...原创 2019-08-08 19:41:00 · 220 阅读 · 0 评论 -
PAT a1119
目的:根据前序和后序确定树。判断树是否唯一。输出一个可能的中序序列输入:N 结点数目前序序列后序序列输出:判断是否树唯一输出一个可能的中序序列算法:前序和后序无法确定是因为当根节点只存在一个子树时,无法确定它是左子树还是右子树。若除叶子节点外某个点只有一个子树,那么答案不唯一。建树通过若存在一个子树,那一定是左子树建立。#include<st...原创 2019-08-08 19:31:24 · 285 阅读 · 0 评论 -
PAT a1118
目的:通过图片找树,找出有多少个鸟输入:N 图片数K 每张图片上的鸟的个数Q 查询数目输出:输出有几棵树,几只鸟对查询判断两只鸟是否属于同一棵树。#include<stdio.h>#include<set>using namespace std;const int maxn = 10010;int father[maxn];...原创 2019-08-08 17:27:26 · 179 阅读 · 0 评论 -
PAT a1132
目的:测试是否是cut整数输入:N <= 20Z 整数,10<=Z<2^31Z的位数保证是偶数个输出:是cut整数,输出Yes。不是输出,No.算法:由于两个切割数乘积不会超过原数,所以int范围就够了。用string存数字,可以变成int型。#include<stdio.h>#include<string&...原创 2019-08-01 18:54:28 · 177 阅读 · 0 评论 -
PAT a1133
目的:按照要求分类,然后重新排序。类里面顺序不变。输入:第一行 第一个节点的地址N <=100000 节点数目K <=1000 第二类元素的分界线[0,K]节点的地址是一个5位的非负整数,NULL被表示为-1节点格式:地址 数据 下一个地址是节点的位置,数据是节点的值[-100000,100000],下一个是下一个节点的位置输出...原创 2019-08-01 18:36:01 · 195 阅读 · 0 评论 -
PAT a1134
目的:判断是不是vertex cover。输入:N <=10000 总点数 0~N-1M <=10000 总边数M条边K <=100 查询数K个查询:格式:Nv v[1] v[2]...v[Nv]Nv 集合的顶点数 v[i] 顶点的参数输出:如果是Vertex cover 输出 Yes如果不是 输出No...原创 2019-08-01 15:34:16 · 233 阅读 · 0 评论 -
PAT a1126
目的:判断是否是Eulerian Path输入:每个点每个边输出:判断是哪种情况算法:用hash表统计每个点的度。如果全为偶数,则为Eulerian如果有两个点的度为奇数,则为semi-Eulerian如果不是以上的情况,则为non-Eulerian而且判定要为连通图,如果不是,则为non-Eulerian#include<stdio.h>...原创 2019-08-05 17:45:00 · 207 阅读 · 0 评论 -
PAT a1127
目的:z字形输出输入:中序和后序遍历顺序输出:层序遍历,按照Z字型输出算法:建树,再广度搜索把节点存下来。奇数层的从后往前输出,偶数层从前往后输出。#include<stdio.h>#include<queue>#include<vector>using namespace std;struct node{ int ...原创 2019-08-05 17:40:34 · 189 阅读 · 0 评论 -
PAT a1135
目的:判断是否是红黑树输入:K <= 30 例子数量N <= 30 节点数量先序序列负数代表是红点。输出:是红黑树:输出YES不是:输出NO算法:红黑树特点:1.每一个节点要不红要不白2.根节点是黑色3.每一个叶子(NULL)是黑色的这句话的意思是,如果这个节点为NULL,则为黑色。4.如果一个节点是红色,它的两个孩子都...原创 2019-07-31 18:58:14 · 295 阅读 · 0 评论 -
PAT a1116
目的:按照排名给奖品。输入:N 人数输出:和人的排位有关,输入他的奖品第一名,是否质数,其他三类奖品。算法:用unordered_map,存名字和排名,然后计算是否为质数#include<stdio.h>#include<algorithm>#include<math.h>using namespace std;co...原创 2019-08-08 20:08:43 · 226 阅读 · 0 评论 -
PAT a1122
目的:判断是否是Hamiltonian Cycle输入:N 节点数,1~NM 边数K 查询#include<iostream>#include<stdio.h>#include<set>#include<unordered_map>#include<vector>using namespace std;...原创 2019-08-06 19:32:58 · 184 阅读 · 0 评论 -
PAT a1123
目的:构建AVL树,然后判断是否是完全二叉树输入:一串节点序列输出:层序序列以及判断是否是满二叉树#include<stdio.h>#include<algorithm>#include<queue>using namespace std;struct node{ int val,height; node*...原创 2019-08-06 19:49:06 · 254 阅读 · 0 评论 -
PAT 甲级 2019年9月8号 题解
第一题:dfs+剪枝k位数不能所有的数字都遍历一遍,必须有选择的。选择k位数和为m的。remain为剩下未分配数的位置的和。remain必须小于等于剩下的位数*9。因为若是大于的话,剩下的所有位数都为9,都满足不了所有位加起来为m。比如k=3,m=20,如果第一位为1,则return。因为无论后面两位是什么,这个三位数的和都小于20。所以这样剪枝。就是在位数为k,所有位和为m的数里找了...原创 2019-09-09 14:40:10 · 439 阅读 · 0 评论 -
PAT 2019 9月8号总结
第一题:一个整数A,所有位加起来为m,A+1的所有位数加起来为n,m和n的最大公约数为大于2的质数,则A称为永远数。给出m个查询,每个查询给出k(A的位数)和 m(A的位数和),找出可能的A,以及对应的n。采用dfs和回溯剪枝。每一层dfs确定以为,当遍历深度为k的时候,结束,判定该数字是否为永远数。每一位可能取的值为0——9,深度为0,也就是第一层,数字不能为0。剪枝,每一层...原创 2019-09-08 21:18:31 · 615 阅读 · 0 评论 -
PAT a1112
目的:找出键盘坏掉的键,还原原本的输入输入:K 坏的键重复的次数输入的字符串输出:坏掉的键,按照字符串中出现的顺序输出还原的输入字符串算法:用unordered_map<char,bool> hash1存字符,遍历字符串1.当前字符,先判断包括该字符在内的后面这K个字符是否是一样的,一样跳转2,不一样跳转32.若该字符在hash1中不存在,那么...原创 2019-08-12 18:41:12 · 320 阅读 · 0 评论 -
PAT a1113
目的:将一堆数分成两堆。要求这两堆数的个数差距最小的同时,两堆数的和差距最大。输入:N [2,10^5]整数个数一串N个整数输出:两堆数的个数差,和的差算法:要求个数差最小,那么就是对半分,若是奇数个,那么就一堆多一个,另一堆少一个。同时要求和的差最大。也就是把这些数字从大到小排序。大堆要大的一般,小堆要小的一般。如果总数为奇数个,那么大堆比小堆多一个。...原创 2019-08-12 18:28:30 · 147 阅读 · 0 评论 -
PAT a1114
目的:统计家庭个数,输出每个家庭人数和人均住宅,人均居住面积。输入:N 单个小家庭的个数小家庭信息格式名字 父母 孩子个数 孩子1 孩子2....住宅数 居住面积输出:大家庭个数大家庭中id最小的人 人数 平均居住房子个数 平均居住面积算法:并查集可以用来统计大家庭个数,而且把id最小的作为父亲结点容易找到每个家庭的代表。小家庭中每个人用vis[]...原创 2019-08-12 18:22:20 · 219 阅读 · 0 评论 -
PAT a1115
目的:构建二叉搜索树,统计最下面两层的结点个数输入:N <=1000 节点个数序列输出:n1 最下面一行的结点个数n2 倒数第二场的结点个数算法:构建树,一个点一个点的插入,同时 记录这个点的层数,把这个点的层数放进链表中或者数组对应层数的值加1.同时每插入一个点,更新最大层数。当所以点都插入完毕。根据最大层数,遍历vector统计最下层或者倒数...原创 2019-08-12 18:07:05 · 194 阅读 · 0 评论 -
PAT a1098
目的:通过初始序列,判断中间序列是插入排序还是堆排序。再输出下一步输入:N 数字个数两个序列输出:插入排序还是堆排序算法:由于答案唯一。所以,先判断是否为插入排序。若不是,就一定为堆排序。插入排序中间序列的特点。前面一部分从小到大排列好的。后面一部分与原序列相同。这里有一个小问题就是。如果原序列有一些位置以经排列好了。比图原序列为2 3 4 1 7 6.中间序...原创 2019-08-15 19:09:26 · 226 阅读 · 0 评论 -
PAT a1120
目的:输出Friend id输入:N 输入的整数个数输出:输出这一串数字里面的Friend ID#include<iostream>#include<stdio.h>#include<string>#include<set>using namespace std;set<int> ans;int N...原创 2019-08-06 20:17:16 · 162 阅读 · 0 评论 -
PAT a1121
目的:找出单身狗输入:N 情侣对M 来的人数输出:找出单生狗,输入总数并且按照从小到大输出id#include<stdio.h>#include<unordered_map>#include<map>#include<vector>using namespace std;unordered_map<i...原创 2019-08-06 20:13:54 · 294 阅读 · 0 评论 -
PAT a1136
目的:找出一个数相应的翻转数输入:正整数 不超过1000个数字。。。输出:输出过程中每一步的过程A + B = CA是初始数字,B是翻转数字,C是和。十步不能得到,输出NOT Found。算法:一个函数判定是否为回文数字string可以翻转,转换成整形加减,再把整形赋值给字符串。#include<stdio.h>#include<...原创 2019-07-31 17:22:58 · 257 阅读 · 0 评论 -
PAT a1125
目的:一堆绳段,组成最长绳子。输入:N 绳段条数N个整数输出:输出最长的长度,向下取整。算法:短的先加,折半的就少,把长的留在最后。因此用vector,并且排序。#include<stdio.h>#include<iostream>#include<vector>#include<algorithm>us...原创 2019-08-04 17:29:19 · 362 阅读 · 0 评论 -
PAT a1146
目的:判断序列是否是给出有向图的拓扑序列。输入:N <= 1000 图的节点数字M <=10000 有向边的数量然后给出M条有向边。节点 1到NK 查询数量每个查询给出一个所有节点的序列。输出:在一行输出所有不是该图形拓扑序列的编号。编号从0开始。末尾不能有空格。因此应该先记录下结果再输出。算法:先用邻接矩阵记录是否有边。用bool就行,...原创 2019-07-17 16:07:37 · 240 阅读 · 0 评论 -
PAT a1047
目的:判断一棵完全二叉树是否是堆。输入:M <=100 被测试的树的数量N 1<=N<=1000 每棵树节点的数量然后是M行N个节点的树,序列是层序遍历的序列。输出:大堆小堆不是堆,然后输出后序遍历的序列。算法:用M,N分别存要测试的例子数和每棵树的节点数。判断大堆一个函数,小堆一个函数。若都不是,输出后序遍历。后序遍历。先左子...原创 2019-07-17 15:12:51 · 150 阅读 · 0 评论 -
PAT a1148
目的:找出2个狼人。规则狼人中有一个人说谎,总共两个人说谎。输入:N 5<N<=100 玩家数量 编号1——NN个发言:格式:符号 编号表示:符号:正表示人类 负表示狼人 编号:指认的人输出:没有答案,输出No Solution.有答案: 一个答案:两个狼人编号从小到大,末尾没有空格 ...原创 2019-07-16 17:35:28 · 216 阅读 · 0 评论 -
PAT a1049
目的:判断输送线路是否安全。输入:n 小于等于10000 不能相遇的商品对(边权)m 小于等于100 运送线数量n个商品队m个运输线路格式:k (线路上的商品数字,<1000)g[i] 商品id,5位数输出:Yes。如果线路安全No。如果线路危险算法:先把建立一个10000*10000的matrix。存边权。但是商品id是五位数。用mp...原创 2019-07-16 16:21:10 · 192 阅读 · 0 评论 -
pat常用模板算法
目录常用语法 stl模板库vector 定义 使用常见算法树Hash表常用语法 for语句,范围for 除了一般的循环,还有遍历功能,如 for(声明:序列),然后就会遍历了。stl模板库 vector 定义...原创 2019-07-16 15:01:11 · 1008 阅读 · 0 评论 -
PAT a1141
目的:根据学生的表现,生成机构的排名输入:N <= 100000 测试人数N个人的信息:ID SCORE SCHOOLid 是一个6个字符的字符串,第一个字符代表测试的等级。B表示基础等级,A表示高级等级,T表示顶级。score 是一个整数[0,100]school 机构的代码,一个不超过6个英文字母id 是独一无二的输出:第一行输出总的机构的数...原创 2019-07-18 18:06:33 · 224 阅读 · 0 评论 -
PAT a1143
目的:找到两个节点的最低祖先。在二叉搜索树上找输入:M 被测试的节点对数 1000N 二叉搜索树的节点个数 10000然后给出二叉搜索树的先序遍历序列然后再是M个节点对。每对节点有U,V两个节点。输出:如果找到了LCA,输出"LCA of U and V is A."如果LCA是U和V中的一个,输出"X is an ancestor of Y."如股票没有找...原创 2019-07-18 16:13:54 · 338 阅读 · 0 评论 -
PAT a1144
目的:N个整数中,找出不属于给出的序列的最小正整数输入:N <=100000N个整数输出:这个序列中缺少的最小正整数。算法:用set存,如果没有找到元素,那就不存在。#include<stdio.h>#include<set>using namespace std;const int inf = 1<<30;...原创 2019-07-18 15:17:23 · 136 阅读 · 0 评论 -
PAT a1150
目的:根据所有路径输出对应输出。数据:N 大于2小于200 城市数字 编号1-N;M 边的数量然后M个边权,无向边,距离是边权。格式 city1 city2 distK 路径数/查询数k个路径格式 n c1 c2 c2 ... cn,n是城市数,后面是经过的城市。输出:每个路径输出一行:Path x(路径编号,从1开始):总距离(描述)三种情况:遍历...原创 2019-07-15 18:43:18 · 196 阅读 · 0 评论 -
PAT a1151
目的:在树上找出两个结点的最低的公共祖先。数据:M 小于1000,被测试的节点对数N 小于10000,树的节点数。N个节点的整数不同。中序序列和先序序列。M个查询。输出:如果找到了这个祖先输出:"LCA of u and v is a"如果a是u和v其中的一个输出:"x is an ancestor of y";如果两个节点没找到在树里面,输出:"E...原创 2019-07-15 17:02:02 · 347 阅读 · 0 评论 -
PAT a1145
目的:找出一串整数的在hash表里面的比较次数输入:MSize hash表的尺寸。Tsize是大于等于Msize最小的整数。N 输入的数字个数M 找的键值的数目所有数组不超过10000.然后输入N个不同的正整数。然后是M个正整数。输出:如果某个数字插入不到hash表里面,那么,这个就输出。hash表里面存数的值便于查询。然后插入完成之后,再查询。#...原创 2019-07-17 18:55:40 · 177 阅读 · 0 评论 -
PAT算法问题模板
这里写自定义目录标题常用语法for语句,范围forstl模板库vector定义使用常见算法树1.前序和中序遍历建树Hash表1.平方探测法建表查询欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建...原创 2019-07-17 19:14:51 · 608 阅读 · 0 评论 -
PAT a1124
目的:抽奖输入:M 转发数N 跳跃数S 第一个人的标号M行,每行一个20字符的字符串输出:输出抽中的人名字算法:从开始的人,每隔跳跃数抽中一个,若是抽中的人已经抽中了,那就在抽这个人后面那个。如果转发数太少,第一个人都抽不出来,输出流局。#include<stdio.h>#include<iostream>#include...原创 2019-08-04 17:13:04 · 162 阅读 · 0 评论 -
英语词汇
1. sequence 序列2.be rounded up to 四舍五入3.chronological 按时间顺序4.ancestor 祖先5.descendant 子孙6.uniquely 独特地7.at least one but not all the werewolves were lying 意思是大于等于1,小于(没有等于)全部8.Quadratic p...原创 2019-08-04 16:28:22 · 200 阅读 · 0 评论 -
PAT a1128
目的:判断是不是Queens Puzzle输入:K 例子个数,[1 200]N 图片大小,[4 1000]输出:是的输出,YES不是输出,NO算法:不在一行好判断,不在一条斜线上,在一条斜线上的两个点,要不行列的和相等,要不行列的差相等。#include<stdio.h>#include<algorithm>using ...原创 2019-08-04 15:42:38 · 302 阅读 · 0 评论