自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(108)
  • 收藏
  • 关注

原创 第十九天-PAT-A停更

剩下的时间就是刷题,不写博客了,如果你也是2020.09.05的考生,那也祝你考试顺利。

2020-09-03 16:18:59 161 1

原创 第十八天PAT-A1149 Dangerous Goods PackagingSTL应用模拟

A1149Description:给出几组不可混搭的ID,判断每个购物序列是否安全(无不可混搭组),安全输出Yes,否则No;思路:ID是5位数,开二维数组会爆内存,第一次想到构造哈希值,前五位为第一个物质ID,后五位为第二个物质ID,但是这样只能对购物序列二重循环,超时了一组;然后考虑用map映射一对不可混搭,没意识到map不能重复映射,浪费了好多时间Debug,后来意识到了改成int映射vector,问题解决。#include<iostream>#include<st

2020-09-02 22:19:16 103

原创 第十八天PAT-A1148 Werewolf - Simple Version逻辑演绎模拟

A1148Description:N个人依次发言,正数代表该数字人为人,负数代表该数字人为狼,这些人里有两只狼,一只撒谎一只没撒谎,求出这个序列的狼人,无解则输出No Solution;思路:这种题一定要仔细捋清逻辑关系;对于本题,可以使用二重循环枚举假设下标对应人为狼人,然后检查这种假设下每人说的话是否能满足题意(一人说谎、一狼说谎),若满足则输出两下标,遍历完毕仍无解则无解;#include<iostream>#include<stdio.h>#include

2020-09-02 22:08:03 141

原创 第十八天PAT-A1147 Heaps基于完全二叉树的大(小)根堆判定

A1147Description:判断完全二叉树是大根堆、小根堆或不是堆,并且输出这棵树的后序遍历序列;思路:对于完全二叉树的任意节点i,其左右孩子节点为2*i和2*i+1(当首节点下标为1时);初始化当前可能为大根堆、小根堆,判断过程中遇到破坏大(小)根堆的条件,则更新标志,,最终根据两个标志确定二叉树情况;对于完全二叉树遍历时,养成从后往前判断的习惯,其一是避免了上界不确定是2i或是2i+1的问题,其二是i/2这样的写法较简洁,但是一定要注意首节点下标为1、遍历下界判断条件是i>1,

2020-09-02 18:27:37 423

原创 第十八天PAT-A1146 Topological Order判定拓扑序列

A1146Description:给出有向图及序列,判断该序列是否为拓扑序列;思路:根据拓扑序列构造方法,检查序列依次出栈的节点入度是否为零即可;#include<iostream>#include<stdio.h>#include<stdlib.h>#include<math.h>#include<string.h>#include<algorithm>#include<map>#include

2020-09-02 18:22:16 110

原创 第十八天PAT-A1145 Hashing - Average Search Time哈希表及冲突处理模拟

A1145写在前面:如果你也在找为何插入时的上界为<msize而查找时的上界为<=msize、或者为什么查找失败了要多加一次查找次数、或者为什么查找次数最开始要初始化为1,本文无法解答。Description:首先将一组无重复的正整数插入到哈希表中,然后在哈希表中尝试找到另一个键的序列并输出平均查找时间(即:查找该数所需的比较次数),哈希函数定义为H(key)=key%TSize,TSize是哈希表的最大size。处理冲突使用**Quadratic (adj.平方的,二次方的)**探测(

2020-09-02 18:16:10 118

原创 第十八天PAT-A1144 The Missing Number简单模拟

A1142Description:找出不在给定序列的最小正整数;思路:把序列中的数存在set里,从1开始顺序遍历找到不在set中的数就break输出;#include<iostream>#include<stdio.h>#include<stdlib.h>#include<math.h>#include<string.h>#include<algorithm>#include<map>#inclu

2020-09-02 17:57:23 63

原创 第十八天PAT-A1142 Maximal Clique图论极大团判断模拟题

A1142Description:clique:团,一个无向图的完全子图;Maximal Clique:极大团,如果一个团不被其他任一团所包含,即它不是其他任一团的真子集,则称该图为图G的极大团;给出一个无向图,判断所给序列是不是团、极大团;思路:拿到题思路十分凌乱,经柳神点拨,可以先确定是不是团,然后根据团外的点判断是不是最大团;判断是不是团即判断是不是完全图,对于团内的任意两点确定之间是否存在边相连;判断是不是最大,即遍历团外的所有点,若存在一点使得团内所有点与之都有边相连,则当前团非

2020-09-02 17:47:06 222

原创 第十八天PAT-A1141 PAT Ranking of Institutions排序模拟

A1141Description:给出一组学生的考号ID 分数Score以及考点学校School,求各学校的总分排名,及该学校有多少人参与考试;注意:读题容易疏忽,tws本身就是个整数,所以tws要在比较函数比较前就计算好加权和,但是加权和又不能每次都加权,而是所有同类同学校总分出来之后加权求和;#include<iostream>#include<stdio.h>#include<stdlib.h>#include<math.h>#in

2020-09-02 17:25:00 71

原创 第十七天PAT-A1140 Look-and-say Sequence字符串简单模拟

A1140Description:D, D1, D111, D113, D11231, D112213111, …D为[0,9]除了1之外的数字,后一个数字是前一个数字的描述:D1描述D:有一个数字D,表示为D1;D111描述D1:有一个数字D,表示为D1;有一个数字1,表示为11;因此为D111;D113描述D111:有一个数字D,表示为D1;有三个数字1,表示为13;因此为D113;……思路:样例的演算过程如下:1 11 12 1121 122111 112213 12

2020-09-01 23:15:57 107

原创 第十六天PAT-A1139 First Contact深搜字符串哈希

A1139Description:若A要追B,则要找到同性好友C,委托C找到B的同性好友,现给出朋友关系,求出符合题意的朋友序列;思路:第一遍做的时候用的字符串接收ID,第二遍做的时候注意到题目描述为"4-digit ID",专门看了一下digit的释义,是0-9的数字的意思,于是考虑用int接收ID,结果测试点2始终过不去,看了柳神的解释,-0000和0000无法判断性别,好吧换回字符串AC了,注意深搜策略;代码没什么可看的,写得又臭又长;#include<iostream>

2020-09-01 22:36:36 384

原创 第十六天PAT-A1138 Postorder Traversal先序中序建树求后序

A1138Description:给出二叉树的先序、中序序列,求后序序列的首个输出值;思路:这里的做法就是朴素地把树建好,求出后序序列然后得出首元素值;#include<iostream>#include<stdio.h>#include<stdlib.h>#include<math.h>#include<string.h>#include<algorithm>#include<map>#incl

2020-09-01 08:44:33 94

原创 第十六天PAT-A1137 Final Grading字符串哈希结构体排序模拟

A1137Description:给出一组学生的三个成绩:上机成绩、期中成绩和期末成绩;若期中成绩>期末成绩,最终成绩 G=(Gmid−term×40%+Gfinal×60%) ,否则期末成绩即为最终成绩,当上机成绩不低于200分并且最终成绩为[60,100]则视为合格。思路:unordered_map将姓名映射为数组下标,结构体变量存储学生信息;#include<iostream>#include<stdio.h>#include<stdlib.h&g

2020-09-01 08:39:40 86

原创 第十六天PAT-A1136 A Delayed Palindrome简单大数模拟回文判断

A1136Description:给出一个数字,判断是否为回文数,若是则输出,不是则将该数与其反转后的数加和,直到和为回文数为止,累计10次加和仍未形成,则输出失败信息;思路:由于数字字符串“低位高下标”的性质,做求和运算前要将字符串反转;求和时考虑进位;#include<iostream>#include<stdio.h>#include<stdlib.h>#include<math.h>#include<string.h&gt

2020-09-01 08:23:25 107

原创 第十六天PAT-A1134 Vertex Cover简单模拟边的遍历

A1134Description:给一个图,和一组已覆盖的节点,求该覆盖是否涵盖了所有边的至少一个点;思路:模拟#include<iostream>#include<stdio.h>#include<stdlib.h>#include<math.h>#include<string.h>#include<algorithm>#include<map>#include<vector>#i

2020-09-01 00:37:13 95

原创 第十六天PAT-A1133 Splitting A Linked List链表模拟STL应用测试点四注意说明

A1133Description:给出一个序列,要求不破坏原顺序的情况下,先输出负数、再输出[0,k]范围数、再输出其余数;思路:模拟链表操作,但是最后一组超时了,可能有无法终止循环的bug,也可能是算法本身有问题,明天看看柳神会怎么做;#include<iostream>#include<stdio.h>#include<stdlib.h>#include<math.h>#include<string.h>#include

2020-09-01 00:29:49 206

原创 第十六天PAT-A1132 Cut Integer简单模拟

A1132Description:给一个数字(位数为偶数),对半分成两个数,若原数可以整数两数之积,即输出Yes;思路:模运算要先判断一下模数是否为零;主要是stoi函数应用;#include<iostream>#include<stdio.h>#include<stdlib.h>#include<math.h>#include<string.h>#include<algorithm>#include<

2020-09-01 00:07:02 89

原创 第十五天PAT-A1130 Infix Expression数的中序遍历求表达式测试三说明

A1130Description:给出一个表达式树,求出带括号的表达式;注意最外层没有括号思路:中序遍历树,每次递归加一对括号;暂不考虑表达式是否有效,对于树结构来说,递归的子树只有四种可能:叶子节点、左空右不空、右空左不空、左右均不空,其中是叶子节点的情况不应再添加括号,其余三种情况可以加括号;这样整个表达式最外层仍有一对括号,将排除了首尾字符的字串输出即可;倘若没有,则证明其首次遍历便是叶子节点,此时不用求字串,直接输出该字符,样例三就是在考察整棵树只有一个节点的情况,可以

2020-08-31 15:07:39 99

原创 第十五天PAT-A1129 Recommendation System简单模拟STL的应用

A1129Description:推荐系统,根据用户访问某item的频次降序输出K个推荐item,如果频次相同冲突,则按照该item的表示数字升序输出;首次访问不输出推荐结果。思路:有两个属性值:该item的访问次数cnt,该item的表示数字in;维护一个可以根据题目意思排序的容器即可,比如set;设置一个数组保存所有item的访问次数,每次访问对应位置值++;重载item结构体<运算符; 返回值类型 operator 运算符 (const 形参列表) const{/

2020-08-30 09:33:42 87

原创 第十五天PAT-A1128 N Queens Puzzle简单模拟

A1128Description:给出一组N皇后问题的序列,判断该序列是否为N皇后问题的解;思路:设置二维数组标记当前位置能否放置;对于每个要放置的位置,判断当前位置,可放置则标记当前以及主副对角线位置不可放置,不可放置则标记flag;#include<iostream>#include<stdio.h>#include<stdlib.h>#include<math.h>#include<string.h>#include

2020-08-30 09:11:45 83

原创 第十五天PAT-A1127 ZigZagging on a Tree中序后序建树Z形层次遍历

A1127Description:给出一棵树的中序、后序遍历序列,求该树的Z形层次遍历序列;思路:正常建树,在建树过程中记录下每层的节点数目,然后广搜求出层次遍历结果,并针对每层的节点进行反转;写代码要注意细节,64行i范围少了个等号,结果将导致最多一行序列没有反转;#include<iostream>#include<stdio.h>#include<stdlib.h>#include<math.h>#include<strin

2020-08-29 18:54:11 96

原创 第十五天PAT-A1126 Eulerian Path欧拉图判断并查集

A1126Description:给出节点数和边数并给出所有边,判断该图是否为欧拉图,若为欧拉图并构成环输出"Eulerian"、不能构成环输出"Semi-Eulerian",非欧拉图输出"Non-Eulerian";思路:规则题目描述得挺清楚,不再赘述,注意判断该图是否为强连通图,非强连通图则非欧拉图,比如对于测试:9 135 71 21 32 32 43 45 27 66 34 56 45 68 9应该输出:2 4 4 4 4 4 2 1 1Non-E

2020-08-29 18:47:24 81

原创 第十五天PAT-A1125 Chain the Ropes简单模拟

A1125Description:绳子要链式绑在一起,即现将两端绳子围成一个圆(各自长度减半),然后环环相扣;现给出每段绳子长度,求他们环环相扣的最大长度;思路:无论如何都要减半,对于长绳子减半的长度损失要大于短绳子,于是先把绳子排序,然后按照从短到长的顺序环环相扣;每一步均用Double类型存储数据防止精度丢失;#include<iostream>#include<stdio.h>#include<stdlib.h>#include<math

2020-08-29 18:37:06 88

原创 第十五天PAT-A1124 Raffle for Weibo Followers简单模拟测试点三错误说明

A1124Description:抽奖,从M条转发记录中第S位开始,每隔N位则为中奖用户,同一用户可以多次转发但只能获奖一次;思路:最初的做法:将M条记录存下,然后从第S人开始一条一条遍历,设当前是第i条转发,当(i - S)%N == 0时则视为中奖用户,检查是否获奖过,没获奖过则加入获奖名单并标记已获奖,若获奖过则向下寻找一位没获奖过的用户;问题出在(i - S)%N == 0时则视为中奖用户这里,根据下标判断将破坏每隔N位的题目描述,如图所示:测试点3就是考察这个地方;

2020-08-29 18:31:29 209

原创 第十五天PAT-A1123 Is It a Complete AVL Tree平衡二叉树AVL完全二叉树判定背诵模板详细注解

A1123Description:给出一组数,求这组数所构成的平衡二叉树的层次遍历序列,并回答其是否为完全二叉树;思路:老老实实建树,有关插入部分代码如果有丝毫不理解,强烈建议去找一个动画版本观察,然后自己动手画一画,过程了然于胸之后,再看代码落实,背诵模板如下:struct node{ int v, height; //height存放该节点子树的最大高度,默认为自己,高度=1 node *lchild, *rchild;};node *newNode(int v){

2020-08-29 18:09:26 85

原创 第十四天PAT-A1122 Hamiltonian Cycle哈密顿回路判断简单模拟

A1122Description:给出图中所有边的端点信息,再给出一些查询,请问这些查询的路径是否为哈密顿回路(由指定的起点前往指定的终点,起点和终点相同,途中经过所有其他节点且只经过一次。)思路:二维数组存放两个点是否有路径,注意无向图双向映射;对于所给查询,满足以下条件之一的,非哈密顿回路,写好if-else判断即可:路径节点数!=总数+1(首尾相同),则非哈密顿回路;路径首尾不相同;路径途中存在无路径的两节点;重复访问了某一节点#include<iostream&g

2020-08-28 19:26:05 294

原创 第十四天PAT-A1121 Damn Single简单模拟

A1121Description:给出一些情侣的ID,然后再给出Party上所有人的ID,判断现在Party上有哪些人单着(另一半没来或者压根没另一半)。思路:unordered_map处理双向映射防止超时;Party名单逐个处理,如果该人单身,就添加至ans中;如果不单身,先查找ans里有没有另一半,如果没有,就加到ans中,如果有,就把另一半从ans里删去;#include<iostream>#include<stdio.h>#include<stdli

2020-08-28 19:13:32 102

原创 第十四天PAT-A1120 Friend Numbers字符串简单模拟

A1120Description:如果两个数每位的和相同,则称为一对朋友数,和为其朋友ID;现给出一系列数,求这些数中不同的朋友ID数目并分别输出这些朋友ID思路:模拟题,把每个数字的朋友ID计算出来放到一个set里;担心超时所以没用string存数;#include<iostream>#include<stdio.h>#include<stdlib.h>#include<math.h>#include<string.h>

2020-08-28 19:02:55 78

原创 第十四天PAT-A1118 Birds in Forest并查集

A1118Description:位于同一图片中的鸟为同一棵树,给出每张照片中鸟的编号,求总树的数目,并判断两只鸟是否位于同一棵树;思路:并查集,再次注意maxn 不是题目中的N<=1e4…#include<iostream>#include<stdio.h>#include<stdlib.h>#include<math.h>#include<string.h>#include<algorithm>#in

2020-08-28 16:54:01 100

原创 第十四天PAT-A1117 Eddington Number简单模拟详细解释

A1117Description:给出N天的骑行距离(整数),求符合以下要求的最大E值:在N天之中恰好有E天骑行距离超过E;思路:一开始思路挺乱,想了半天,感觉可以将骑行距离按降序排列至数组num,然后从E=0开始判断:num[E] >= E是否成立,比如:num[0] = 10 > 0, E++;num[1] = 9 > 1,E++;… …num[6] = 6 > 6,矛盾,循环结束,E = 6为最大E值;注意E <= N也是循环终止的条件;如

2020-08-28 16:49:42 146

原创 第十四天PAT-A1116 Come on! Let‘s C简单模拟

A1116Description:排名第一:Mystery Award排名为素数:Minion其他排名:Chocolate按以上规律输出首次查询到该人的结果,再次查询输出:Checked;查无此人的话,无论几次查询都输出:Are you kidding?#include<iostream>#include<stdio.h>#include<stdlib.h>#include<math.h>#include<string.h>

2020-08-28 16:13:14 83

原创 第十三天PAT-A1112 Stucked Keyboard模拟题

A1112Description:坏键的重复次数一定,为k,现给出k及一字符串,按探测顺序输出坏键并给出原输入字符串;思路:记录相同键出现次数:cnt,上一个键:c对于每个字符,判断其与c是否相同,相同则cnt++如果cnt为k的整数倍,将该字符添加至疑似vector:maybe若与c不相同(此时cnt尚未变动,仍保存上一字符的cnt信息),若cnt不是k的整数倍,则确定其不是坏键,若maybe存在则移除嫌疑,保留当前字符至c,更新cnt为1由于算法是处理当前字符的时候判断上一字符的

2020-08-28 11:54:29 97

原创 第十三天PAT-A1115 Counting Nodes in a BST指针建树模板

A1115Description:给出BST的插入序列,求最底两层节点个数;思路:一开始很蠢地将序列排序,然后求二分查找次数以计算深度,竟然没意识到不同的插入顺序将影响树结构…下次注意算法正确性;正确的做法就是:建树、深搜求深度,结束#include<iostream>#include<stdio.h>#include<stdlib.h>#include<math.h>#include<string.h>#include&

2020-08-28 10:47:28 77

原创 第十三天PAT-A1114 Family Property并查集详细注解

A1114Descripiton:家族产权,给出N个人的家族关系即其所拥有的房产数和总面积,求这一系列人属于几个家族,并求其家族人均房产数和人均面积。思路:由于输入当前人的时候,其孩子的房产数和面积还没输入,所以第一遍输入没法计算房产总数和面积总数,于是我在第一遍输入的时候直接不做集合求并了,而是将所有与当前人为一家人(包括父母节点)的下标存储在结构体vector<int>child中,当所有人的房产数和总面积都输入完毕后,再从头到尾遍历每个人、取出要合并为一家人的下标进行合并;id

2020-08-27 22:36:33 165

原创 第十三天PAT-A1113 Integer Set Partition侥幸通过

A1113Description:给一组数,将它们划分成无交集的两个组,并且使这两组数量尽可能相等但总和差距尽可能大;思路:将数组排序,求出前缀和数组,再用结构体将所有划分方法的数量差和总和差存储、排序,输出最佳答案;思路不如柳神清晰,传送门:柳婼:1113 Integer Set Partition“disjoint sets”这个条件其实数据没卡…侥幸通过了,(汗#include<iostream>#include<stdio.h>#include<s

2020-08-27 22:12:19 71

原创 第十三天PAT-A1037 Magic Coupon简单贪心

1037Description:两组数据,coupon和value,求两组数乘积的最大值;同号中较大的两数相乘即为最大,异号的会减少总值,所以抛弃不用;#include<iostream>#include<stdio.h>#include<stdlib.h>#include<math.h>#include<string.h>#include<algorithm>#include<map>#inclu

2020-08-27 16:35:58 70

原创 第十三天PAT-A1082 Read Number in Chinese字符串繁琐模拟

1082Description:给出一个数字,写出其中文读法;首先判断是不是负数,如果是负数输出"Fu",并把负号去掉;然后四位为一组进行处理,遇到零时便标记zero,当处理到非零数时,才判断zero以输出补充"ling";四位一组统计输出非零数个数,若一组处理完计数器还是零,则该组全为0,输出该组对应值;全局的输出请求汇总到pri函数里,便于控制输出;具体可以看代码注释;前几次交爆格式错一个Wa,修改多余空格后全过了…过了就没深究,有问题欢迎评论啊????#include<io

2020-08-27 13:13:07 104

原创 第十三天PAT-A1077 Kuchiguse字符串反转简单模拟

1077Description:给一组字符串,找它们的最长公共后缀。可以在输入的时候反转,即查找最大前缀,20分朴素模拟就OK;字符串反转的两个方法:string str;reverse(str.begin(), str.end()); //algorithm中的reverse函数 char s[]="hello"; strrev(s); //string.h中的strrev函数,cstring头文件有了女神早上的问候,将是敲代码元气满满的一天!#include<iostre

2020-08-27 10:26:09 106

原创 第十二天PAT-A1035 Password字符串简单模拟

1035Description:按照转换规则将用户密码进行转换,并输出转换情况。#include<iostream>#include<stdio.h>#include<stdlib.h>#include<math.h>#include<string.h>#include<algorithm>#include<map>#include<vector>#include<queue>

2020-08-26 19:37:05 111

原创 第十二天PAT-A1005 Spell It Right大数字符串模拟

A1005Description:大数,给一个数字N (≤10100),求每位和#include<iostream>#include<stdio.h>#include<stdlib.h>#include<math.h>#include<string.h>#include<algorithm>#include<map>#include<vector>#include<queue>

2020-08-26 18:57:38 93

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除