自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 两台主机之间的数据链路层采用后退N帧协议(GBN)传输数据,数据传输速率为16kbps,单向传播时延为270ms,数据帧长度范围是128~512字节,接收方总是以与数据帧等长的帧进行确认。

为了方便检索题目搞的有点长……下面请看一道真题:(2012年联考) 两台主机之间的数据链路层采用了后退N帧协议(GBN)传输数据,数据的传输速率为16kbps,单向传播时延为270ms,数据帧的长度范围是128~512字节,接收方总是以数据帧等长的帧进行确认(即确认帧长度与发送的帧一样大)。为使信道利用率最高,帧序列的比特数至少是(B)A.5 B.4 C.3 D.2解析:在这里选取的数据帧长度为128B,其原因是这样的,若要使信道利用率最高,自然是不能让信道空闲下来,即不停的发信息。所以.

2020-06-24 15:54:44 15091 18

原创 汉诺塔问题

汉诺塔规则如下:1、有三根相邻的柱子,标号为A,B,C。2、A柱子上从下到上按金字塔状叠放着n个不同大小的圆盘。3、现在把所有盘子一个一个移动到柱子B上,并且每次移动同一根柱子上都不能出现大盘子在小盘子上方。这是一个递推问题,请先看2个盘子的情况:第一次可将上层的块移动到B上:第二次可将A上的块移动到C上:第三次再将B上的块移动到C上:这样就实现了题目的要求,下面看...

2020-03-29 23:23:10 1070

原创 费解的开关

本题可通过递推解决。其思路是这样的:由于每按一个灯就会导致上下左右的灯取反,所以如果想让当前某个灯变亮的话,决不能直接按它,而是通过下一行与它同列的灯间接使它变亮。第i+1行依赖于第 i 行的灯的情况,如果第 i 行是能递推通往正确结果(即全亮)的,那么该行为0的位,应该由第i+1行给调回来。所以第1行是一切的基础,需要对第一行灯按与不按(而不是亮与不亮)的32中情况逐一枚举,用二进制数...

2020-03-29 19:39:22 310

原创 递归实现排列组合

本题要求实现对n以内的整数进行排列组合(只选不排)。实现思路就是对于当前第u位数(u <= n),分为选与不选两种情况,构成了一棵二叉选择树,最终的叶节点就是答案。为了节省空间和简化操作,使用状态压缩,对于state,第i位为1表示i这个数被选中。#include<iostream>using namespace std;int n;void dfs(int u...

2020-03-27 21:19:55 1101

原创 最短Hamilton路径

本题如果使用暴搜的话会超时。因为是无向图,所以最终我们只关心不重不漏的一条路径的长度,而不关心内部先走哪个点后走哪个点。所以,我们需要对每个点进行位置标记,当然可以开一个visited数组记录,但为了操作简便以及空间复杂度,使用二进制位表示更为简便。某一位为1表示对应的该点被访问过。因此一个二进制数就代表了一种路径状态,...

2020-01-20 21:45:43 522

原创 快速幂

本题暴力解的话会超时。所应用的方法是快速幂,其主要思想是这样的:比如求3^73^1 = 3;3^2 = 9;3^3 = 27;这里的3^3不是暴力算出来的,我们已经算出来了3^1 = 3和3^2 = 9;所以两者相乘就是3^3。所以快速幂之所以快就是因为,它利用了前面的结果,避免了重复计算。下面我们需要考虑,怎么样才能让计算机知道现在要用前面的那些结果呢?我们以3^5为例讲解...

2020-01-11 22:36:44 198

原创 经典题目——链表中环的入口结点

链表中环的入口结点引例:给定一个链表,若其中包含环,则输出环的入口节点。若其中不包含环,则输出null。给定如上所示的链表:[1, 2, 3, 4, 5, 6]2注意,这里的2表示编号是2的节点,节点编号从0开始。所以编号是2的节点就是val等于3的节点。则输出环的入口节点3.本题所用到的方法是快慢指针扫描。 ...

2019-12-04 21:10:21 173

原创 经典题目——正则表达式匹配

剪绳子引例:请实现一个函数用来匹配包括'.'和'*'的正则表达式。模式中的字符'.'表示任意一个字符,而'*'表示它前面的字符可以出现任意次(含0次)。在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"ab*ac*a"匹配,但是与"aa.a"和"ab*a"均不匹配。本题可通过动态规划解决,建立二维数组f,f[i][j]为true表示字符串s中从i...

2019-12-04 17:20:34 648

原创 经典题目——剪绳子

剪绳子引例:给你一根长度为 n 绳子,请把绳子剪成 m 段(m、n 都是整数,2≤n≤58 并且 m≥2)。每段的绳子的长度记为k[0]、k[1]、……、k[m]。k[0]k[1] … k[m] 可能的最大乘积是多少?例如当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到最大的乘积18。本题其实是一个数学问题:对于一个整数N,将其分解为m项3、n项2可得到最大乘积。其中...

2019-12-02 21:31:16 825

原创 经典题目——二分查找

二分查找引例:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个升序的数组旋转之后的数组,输出数组中最小的元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。数组可能包含重复项。数组内所含元素非负,若数组大小为0,请返回-1。查找类问题最优解一定是O(logN)级的,首选二分法。只不过本题的二分有些奇怪。在课堂上讲的二分的使用...

2019-11-25 20:03:37 298

原创 经典题目——中序遍历的后继

中序遍历的后继引例:给定一棵二叉树的其中一个节点,请找出中序遍历序列的下一个节点。本题还是要将规模缩小,考虑三个节点的简单模型。可分为两种情况:1.当前节点存在右节点:根据中序遍历的规则,则当前节点的后继是右节点的最左边的节点。如图中A节点的后继是F,这是因为A节点存在右节点C,所以沿着C节点的最左节点就是A的后继。2.当前节点不存在右节点。此时应该分两步找:第一步,找到将该节点所...

2019-11-24 17:02:56 3124

原创 算法心经——二分法

二分法引例:给定数组[0,1,2,4,5]查找2、3,请设计查找方案。要求:当所找元素不存在时,要输出最接近的值。很明显,引例中是想让我们找一个不存在的数。此时我们需要兼顾到存在的时候答案正确,再来考虑对于不存在的数返回一个什么样的值。下面先给出算法。第一种情况我们将区间划分为[left, mid]和[mid+1,right],更新时,left = mid + 1,或者right = ...

2019-11-23 22:20:51 235

原创 算法心经——分治,抽屉原理

分治,抽屉原理引例1:给定一个长度为 n 的整数数组 nums,数组中所有的数字都在 0∼n−1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。引例2:给定一个长度为 n+1 的数组nums,数组中所有的数均在 0∼n 的范围内,其中 n≥0。请找出数组中任意一个重复的数,但不能修改输入的数组。我们先看第一题...

2019-11-23 21:59:46 485

原创 1143 Lowest Common Ancestor

题目大意给定一棵BST树的先序遍历,再给出任意两个节点(不一定存在该节点),让你输出两个节点的最低公共祖先。思路解析本题有两种做法,下面分别介绍:1. 法一:见到BST就要想到中序遍历、从小到大、先序还原的特性。但本题难就难在先序还原上。以前的做法都是按照先序序列逐个insert,但如果对于一棵单支树,也就是最差的...

2019-11-23 19:30:01 156

原创 1139 First Contact

题目大意假设A是男生,B是女生。A看上了B,于是A先去找同性基友C,C找靓妹D,D转告B。要保证C和A是同性,D和B是同性。如果A和B是同性,则C和D也和他们同性。思路解析本题有个坑就是要注意-0000的情况。所以不能单纯的用int处理,要用string,长度不同的就是异性。所以要仔细审题啊,考...

2019-11-13 18:55:18 144

原创 1135 Is It A Red-Black Tree

题目大意给一棵二叉搜索树的前序遍历,判断它是否为红黑树,是输出Yes,否则输出No。思路解析第一眼看到红黑树着实吓了一跳,暗想陈姥姥真狠……但是题意倒不难,一遍就AC了。本题比较纠结的是第3条注解,是在不理解什么意思,于是直接把它忽略了,事实证明没有任何影响。所以本题所用到的红黑树判定条件是这样的:1. 根节点是...

2019-11-09 20:13:11 106

原创 1131 Subway Map(两种解法)

题目大意给出各地铁线所经过的站点,构成一张地铁交通图。再给出起点和终点,让你找出最快的一条路径,如果路径不唯一就选择中转次数最少的那一条。思路解析本题是铁了心的要考邻接表。传统的Dijkstra + DFS最后一个测试点会超时(末尾也会附上该解法)。本题的难点是判断中转站和...

2019-11-06 19:43:23 1357

原创 1130 Infix Expression

题目大意给出一棵树,让你输出中缀表达式。但是要符合括号格式。思路解析既然是中缀表达式妥妥的中序遍历没毛病。关键就是括号问题,仔细观察发现,括号是把左右子树分别括了起来,只有一个左右节点的不加括号;比如:这种情况输出结果是BAC,而不是(B)A(C)二叉树的解题关键要把规模缩小,只着眼于三个节点的基本二叉树模...

2019-11-02 12:12:45 210

原创 1129 Recommendation System

题目大意类似于操作系统中LRU(最近最少使用算法)。给出用户最近浏览记录,根据访问频数让你列出他接下来最有可能访问的K项,按照可能性递减,如果可能性相同则按索引升序。思路解析题目本身不难,如果对C++和容器操作掌握不好可就很难了……(没错,说的就是我……)为了排序和唯一性自然想到set,set中的元素是复杂类型no...

2019-11-01 20:03:53 353

原创 1128 N Queens Puzzle

题目大意给出一个皇后图,以这样的方式给出:一个数组包含n个数字,每个数字表示该列的皇后所在的行数,判断给出的皇后图是否满足不会互相攻击(任意两个皇后都要不在同一行或者同一列,且不在斜对角线上)。思路解析第一次操作八皇后问题,见识到了对角线问题的处理方法。用vec[n]存储一张图给出的数字~对于第j个数字,判断前0~...

2019-10-31 20:11:55 143

原创 1126 Eulerian Path

题目大意欧拉路径:每条边均被访问到,且仅访问一次。 欧拉回路:起始点都相同的欧拉路径。所有顶点都具有偶数个度的连通图存在欧拉回路,称为Eulerian;如果有两个顶点有奇数个度,则这两个点为欧拉回路的起始点。有欧拉路径但是不存在欧拉回路的图称为semi-Eulerian....

2019-10-30 20:10:41 217

原创 1123 Is It a Complete AVL Tree

题目大意按照给出的顺序将节点插入一棵二叉树中,使得这棵树成为二叉平衡搜索树。最后输出层序遍历,并判断是否是一棵完全二叉树。思路解析把AVL树调整代码敲上去就可以了,需要牢记模板。关于AVL树的有关讲解请移步:点击这里示例代码#include<iostream>#include<algori...

2019-10-29 20:06:12 83

原创 1119 Pre- and Post-order Traversals

题目大意给出一棵树的结点个数n,以及它的前序遍历和后序遍历,输出它的中序遍历,如果中序遍历不唯一就输出No,且输出其中一个中序即可,如果中序遍历唯一就输出Yes,并输出它的中序.思路解析解决本题首先要弄清楚什么时候对应多棵树,当只有一个子树的时候才会出现多组解。证明也很简单,将一棵规模很大的树看做只有根左右三个节点的...

2019-10-28 18:40:45 128

原创 1114 Family Property

题目大意给定每个人的家庭成员和其自己名下的房产,请你统计出每个家庭的人口数、人均房产面积及房产套数。首先在第一行输出家庭个数(所有有亲属关系的人都属于同一个家庭)。随后按下列格式输出每个家庭的信息:家庭成员的最小编号 家庭人口数 人均房产套数 人均房产面积。其中人均值要求保留小数点后3位。家庭信息首先按人均面积降序输出,若有...

2019-10-24 18:48:07 393

原创 1112 Stucked Keyboard

题目大意键盘某些键卡住了,按一次重复k次,要求找出可能的键,并且输出正确的字符串顺序。可能的键要求按照被发现的顺序输出。思路解析本来以为第一题是道水题,没想到来了个惊喜。当然题目不难,只是比较考验编程技巧,所以解法不计其数,下面给出我的分析:维护两个map集合,mapp和mapp2分别存放坏掉的和正常的按键。i...

2019-10-22 20:28:38 139

原创 1111 Online Map

题目大意给一张地图,两个结点中既有距离也有时间,有的单行有的双向,要求根据地图推荐两条路线:一条是最快到达路线,一条是最短距离的路线。第一行给出两个整数N和M,表示地图中地点的个数和路径的条数。接下来的M行每一行给出:道路结点编号V1 道路结点编号V2 是否单行线 道路长度 所需时间要求第一行输出最快...

2019-10-20 11:43:06 254

原创 1107 Social Clusters

题目大意有n个人,每个人喜欢k个活动,如果两个人有任意一个活动相同,就称为他们处于同一个社交网络。求这n个人一共形成了多少个社交网络。思路解析可将爱好看做边,人看做顶点。所以本题问的就是极大联通子图的个数,与各联通子图内顶点的数量。由于本题并没有给出顶点的信息,而是各条边的信息。所以必然要用并查集统计连通图的个数。...

2019-10-19 09:10:52 83

原创 1103 Integer Factorization

题目大意给三个正整数N、K、P,将N表示成K个正整数的P次方和,其中,这K个正整数必须递减排列,允许重复,如果有多种方案,选择底数n1+…+nk最大的方案,如果还有多种方案,选择底数序列的字典序最大的方案。思路解析穷举法暴力模拟,为了避免超时,一般都把待选数放到一个数组里,而不是每次重新计算。我一开始以为给定第一个数...

2019-10-16 20:02:06 589

原创 1099 Build A Binary Search Tree

题目大意给出一棵树的结构,再给出一串数字序列,让你数字填空,使得这棵树为二叉搜索树。思路解析见到BST就要想到中序遍历,已经形成PAT套路了。本题也不例外,先将所给数字升序排列,然后在中序遍历的过程中填空就可以。示例代码#include<iostream>#include<vector&g...

2019-10-11 20:50:09 335

原创 1098 Insertion or Heap Sort

题目大意给出一串序列和按“插入排序”或“堆排序”的中间结果,让你判断是哪种方法排的,并按这种方法再排一次。思路解析本题考察对堆排序的掌握,可见PAT也并不是一成不变的,还是要全面啊。示例代码#include<iostream>#include<vector>#include<a...

2019-10-10 21:17:56 116

原创 1096 Consecutive Factors

题目大意一个正整数N的因子中可能存在若干连续的数字。例如630可以分解为3*5*6*7,其中5、6、7就是3个连续的数字。给定任一正整数N,要求编写程序求出最长连续因子的个数,并输出最小的连续因子序列。思路解析第一眼看到这道题,压根没敢往暴力模拟上想,一直在设计01背包和动态规划,后来越想越不对,第一题不至于这么硬吧?!果然,真的是暴力...

2019-10-09 20:25:47 78

原创 1095 Cars on Campus

题目大意给出一个L层的切片,每一块切片是一个大小为M * N 的二维矩阵,其中为1的位置就是病变的位置,将这L层切片上下堆叠起来就形成了一个立体映像,二维状态的病变位置也就组成了立体的肿瘤。现在让你计算肿瘤的体积(也就是1的个数)。但是,体积不超过T的肿瘤不计数。有邻边的和满足如图所示的这种六块红色病变位置均可组成一个肿瘤。...

2019-10-09 19:00:55 363

原创 1091 Acute Stroke

题目大意给出一个L层的切片,每一块切片是一个大小为M * N 的二维矩阵,其中为1的位置就是病变的位置,将这L层切片上下堆叠起来就形成了一个立体映像,二维状态的病变位置也就组成了立体的肿瘤。现在让你计算肿瘤的体积(也就是1的个数)。但是,体积不超过T的肿瘤不计数。如图所示的六块红色病变位置组成一个肿瘤。思路解析一道十...

2019-10-07 19:25:15 157

原创 1087 All Roads Lead to Rome

题目大意有N个城市,M条无向边,从某个给定的起始城市出发,前往名为ROM的城市。每个城市(除了起始城市)都有一个点权(称为快乐值),和边权(每条边所需的花费)。求从起点到ROM所需要的最少花费,并输出其路径。如果路径有多条,给出快乐值最大的那条。如果仍然不唯一,选择路径上的城市平均幸福值最大的那条路径.思路解析仍然是...

2019-10-04 20:02:39 199

原创 1086 Tree Traversals Again

题目大意用栈的操作唯一对应一棵二叉树的中序遍历,让你输出这棵树的后序遍历。思路解析观察不难发现,每一对push和pop中间夹的节点就是栈顶这个节点的左子树,这么说可能有些难理解,我们把题目给的输入示例中pop出来的元素标注出来:Push 1Push 2Push 3Pop 3Pop 2Push 4Pop...

2019-10-02 19:52:49 91

原创 1082 Read Number in Chinese

题目大意给出一个数,按读数规则输出。思路解析需要考虑的情形比较多,好在例子很好举,所以边写边Debug呗。示例代码#include<iostream>#include<vector>#include<string>using namespace std;string t...

2019-09-30 20:21:59 217

原创 1079 Total Sales of Supply Chain

题目大意给出供应商、中间商、零售商的进货关系,每往下一层,要加价r%,让你计算所有零售商的销售总额。思路解析描述有些绕,尤其是“第i行表示经销商或零售商从供应商i那里获取的产品数Ki”这一句,供应商i是什么鬼?再往下读“Kj为0表示第j个人是零售商”,这句话反过来:Kj不为0表示第j个人不是零售商。也就是说,Kj不为0...

2019-09-26 20:36:13 82

原创 1078 Hashing

题目大意给出散列表长和要插入的元素,将这些元素按照读入的顺序插入散列表中,其中散列函数为h(key) = key % TSize,解决冲突采用只向正向增加的二次方探查法。如果题中给出的TSize不是素数,就取第一个比TSize大的素数作为TSize.思路解析注意本题所采用的二次探测需要在start + i*i之后再与m取模,其中i从0到...

2019-09-25 20:39:38 79

原创 1076 Forwards on Weibo BFS + DFS

题目大意给出每个用户关注的人的id,和转发最多的层数,求一个id发了条微博最多会有多少个人转发。思路解析题目给出的是“关注表”,为了方便,需要转换成“被关注表”,即可以被哪些人转发。本题考查带深度的图的遍历,dfs和bfs各有特色,下面给出两种解法,但是更推荐bfs。bfs先天具有这种统计层数的优势,dfs虽然也可...

2019-09-25 18:48:37 268

原创 1075 PAT Judge

思路解析题目大意应该都懂,点一下坑点:1. 当总分相同,要按照“得满分”题目的个数进行降序;2. 没提交过的和一次都没通过编译的人不参与排名,与得0分的是两个意思;3. 哪一道题编译没通过就输出‘-’。示例代码#include<iostream>#include<vector>#inc...

2019-09-23 18:38:31 127

空空如也

空空如也

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

TA关注的人

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