北邮计算机考研复试上机历年真题
北邮计算机考研复试机试机历年真题
北邮计算机考研复试上机真题
北邮计算机考研复试机试真题
在线测试地址:https://app2098.acapp.acwing.com.cn/problem/list/
二进制数
题目描述
大家都知道,数据在计算机里中存储是以二进制的形式存储的。
有一天,小明学了 C 语言之后,他想知道一个类型为 unsigned int 类型的数字,存储在计算机中的二进制串是什么样子的。
你能帮帮小明吗?并且,小明不想要二进制串中前面的没有意义的 0 串,即要去掉前导 0。
输入格式
第一行,一个数字 T(T<=1000),表示下面要求的数字的个数。
接下来有 T 行,每行有一个数字 n(0<=n<=10^8),表示要求的二进制串。
输出格式
输出共 T 行。每行输出求得的二进制串。
输入样例
5
23
535
2624
56275
989835
输出样例
10111
1000010111
101001000000
110110111010011
11110001101010001011
A + B Problem
题目描述
Calculate the sum of two given integers A and B.
输入格式
The input consists of a line with A and B. (−104≤A,B≤104).
输出格式
Output the only answer.
输入样例
2 3
输出样例
5
Single Number
题目描述
Given an array with N integers where all elements appear three times except for one.
Find out the one which appears only once.
输入格式
Several test cases are given, terminated by EOF.
Each test case consists of two lines. The first line gives the length of array N(1≤N≤105), and the other line describes the N elements. All elements are ranged in [0,263−1]
输出格式
Output the answer for each test case, one per line.
输入样例
4
1 1 1 3
10
1 2 3 1 2 3 1 2 3 4
输出样例
3
4
Three Points On A Line
题目描述
Given points on a 2D plane, judge whether there’re three points that locate on the same line.
输入格式
The number of test cases T(1≤T≤10) appears in the first line of input.
Each test case begins with the number of points N(1≤N≤100). The following N lines describe the coordinates (xi,yi) of each point, in accuracy of at most 3 decimals. Coordinates are ranged in [−104,104].
输出格式
For each test case, output Yes if there’re three points located on the same line, otherwise output No.
输入样例
2
3
0.0 0.0
1.0 1.0
2.0 2.0
3
0.001 -2.000
3.333 4.444
1.010 2.528
输出样例
Yes
No
日期
题目描述
请你计算出第 X 年 Y 月 Z 日是第 X 年的第几天。其中,1 月 1 日是第一天,1 月 2 日是第二天,以此类推。
计算时请注意闰年的影响。对于非整百年,年数能整除 4 是闰年,否则不是闰 年;
对于整百年,年数能整除 400 是闰年,否则不是闰年。
如 1900 年和 1901 年不是闰年,而 2000 年和 2004 年是闰年。
输入格式
第一行有一个整数 T (T≤100),表示一共有 T 组数据需要你处理。
接下来一共有 T 行,每行是一个如下格式的字符串:X:Y:Z,表示你需要计算 第 X 年 Y 月 Z 日是第 X 年的第几天。其中 X 是一个大于 0,小于 2100 的整 数。保证字符串的格式都是合法的,字符串所表示的日期也都是存在的。
输出格式
对于每组数据,你需要输出一个整数,表示所求得的结果。
输入样例
2
2013:4:12
112:4:12
输出样例
102
103
最值问题
题目描述
给出 N 个数,求出这 N 个数中最大值和次大值。注意这里的次大值必须严格小 于最大值。输入保证 N 个数中至少存在两个不同的数。
输入格式
第一行为测试数据的组数 T(T≤20)。请注意,任意两组测试数据之间是相互独立的。
每组数据包括两行:
第一行为一个整数 N(1≤N≤1000)。
第二行为 N 个正整数,每个整数均不大于 106。
输出格式
每组数据输出两个数,即 N 个数的最大值和次大值,中间用空格隔开。
输入样例
2
5
1 2 3 4 5
4
2 2 2 3
输出样例
5 4
3 2
统计时间间隔
题目描述
给出两个时间(24 小时制),求第一个时间至少要经过多久才能到达第二个时间。给出的时间一定满足的形式,其中 x 和 y 分别代表小时和分钟。
0≤x<24,0≤y<60。
输入格式
第一行为数据组数 T(1≤T≤50000)。
每组数据包括两行,分别代表两个时间
输出格式
每组数据输出一行,表示最少经过的分钟数。
输入样例
2
7:00
7:00
7:00
8:00
输出样例
0
60
字符串转换
题目描述
我们将仅由若干个同一小写字母构成的字符串称之为简单串,例如"aaaa"是一个 简单串,而"abcd"则不是简单串。
现在给你一个仅由小写字母组成的字符串, 你需要用最小的花费,将其转换成一个简单串。
花费的计算规则如下:将 a 到 z 这 26 个小写字母从左到右排成一排,则每个字母都有左右两个邻居,我们认为 a 的左邻居是 z,z 的右邻居是 a。
一个字母只能转换成其相邻的字母,转换的花费为 1。
一个字母可以进行多次转换,例如将 a 转换成 d,可以进行如下的 步骤: a->b->c->d,花费为 3。
字符串的转换花费为所有字母转换花费之和。
例如将字符串"abbbz"转换成简单串的最小花费为 3,转换后的结果为"bbbbb"。
输入格式
第一行一个整数 T(T≤100),表示测试数据的组数。 每组测试数据只有一行, 为仅含小写字母的字符串,字符串长度不超过 1000。
输出格式
对于每一组数据,输出一个整数,表示将字符串转换成简单串的最小花费。
输入样例
2
abbba
abbac
输出样例
2
3
Python List
题目描述
在 Python 中,List (列表)是一种非常重要的数据结构。它与 C/C++/Java 中的数组有些类似,但支持添加新元素时的动态扩展。在这个问题中,你需要处理如下的几种对 List 的操作。
L=[]: 将名字为 L 的 List 清空。在这里,List 的名字是长度为 1 到 10 之间的字符串(只包括大小写字母)。如果 L 原来不存在,这个语句相当于定义了一 个名字为 L 的空列表。
L.append(x):向 L 的末端插入元素 x。为方便起见,这里的 x 只会是[0, 65536]之间的整数。
L.sort():将 L 中的元素按升序排序。
L[id]:返回 L 中下标为 id(id≥0)的值。下标是从 0 开始计数的。
给定若干 Python 语句,你的任务是对于每个形如 L[id]的语句,输出它返回的值。
输入格式
输入数据包含多组测试数据。请注意各组测试数据之间是相互独立的。输入的第一行是一个整数 T(T≤100),表示测试数据的组数。每组测试数据第一行是语句的数量 N (N≤100)。接下来 N 行,每行一个 python 语句。测试数据保证只会出现上述四种语句,语句中间不会出现空格。一个 List 在被使用前一定会被先定义。
输出格式
对于每个查询,输出查找的 L[id]的值。如果 id 超出了当前 List 的下标范围,;输出一行 ERROR。
输入样例
2
5
a=[]
a.append(0)
a.append(1)
a[0]
a[1]
8
lista=[]
lista.append(123)
lista.append(65)
lista[0]
lista.sort()
lista[0]
listb=[]
listb[0]
输出样例
0
1
123
65
ERROR
文件系统
题目描述
现在很多操作系统的文件系统都是基于树形结构设计的。即一个目录下可以有若干个目录和文件,而每个目录和文件都可以通过一条从根目录出发的唯一路径来唯一确定。我们希望你实现对这样的一个文件系统的简单管理。
为了简化问题,我们做出如下假设:
假设文件系统初始时只有一个根目录 root。
假设所有出现的文件和目录的名字都是唯一的。即,不会有两个相同名字的文
件出现,不会有两个相同名字的目录出现,也不会有一个文件和一个目录名字相同。
文件名字和目录名字都是长度在 1 到 20 之间的字符串(包括 1 和 20),且只由英文大写字母、英文小写字母、数字组成。大小写字母之间不等效。
你需要实现如下操作:
CREATEFILE FILENAME DIRNAME
这个操作的含义是:在 DIRNAME 的目录下创建一个名字为 FILENAME 的文件。我们保证当出现这个操作时,DIRNAME 是一个已经存在的目录,而FILENAME 这个名字是首次出现。
CREATEDIR DIRNAME1 DIRNAME2 这个操作的含义是:在 DIRNAME2 的目录下创建一个名字为 DIRNAME1 的目录。我们保证当出现这个操作时,DIRNAME2 是一个已经存在的目录,而 DIRNAME1 这个名字是首次出现。
LISTFILE DIRNAME 这个操作的含义是:按照创建的先后顺序打印出DIRNAME 目录下的所有文件名字。我们保证当出现这个操作时,DIRNAME是一个已经存在的目录.
LISTDIR DIRNAME 这个操作的含义是:按照创建的先后顺序打印出DIRNAME 目录下的所有目录名字。我们保证当出现这个操作时,DIRNAME是一个已经存在的目录
输入格式
第一行有一个整数 T,表示一共有 T(T≤20)组数据需要你处理。请注意各组数据之间是相互独立的。每当处理新的一组数据时,你都应当假设此时只有一个名字为 root 的根目录存在。
对于每组数据,第一行有一个整数 N(0< N≤100),表示有 N 个操作需要你处理,接下来的 N 行,每一个行描述了一个操作。
输出格式
对于每个 LISTFILE 操作和 LISTDIR 操作,如果找到了 X 个文件(或目录),你需要输出 X 行,按照创建时间从早到晚的顺序,每一行打印一个文件(或目录)的名字。
如果找到了 0 个文件(或目录),就不要输出任何东西。
请注意不要输出多余的空格和换行符。
输入样例
输出样例
题目描述
输入格式
输出格式
输入样例
2
8
CREATEFILE desktop root
CREATEDIR DESKTOP root
LISTFILE root
LISTDIR DESKTOP
CREATEFILE scr20130412 DESKTOP
CREATEFILE scr20130411 DESKTOP
CREATEFILE scr20130413 DESKTOP
LISTFILE DESKTOP
5
LISTFILE root
CREATEDIR webapp root
CREATEDIR myweb webapp
CREATEDIR MyWeb webapp
LISTDIR webapp
输出样例
desktop
scr20130412
scr20130411
scr20130413
myweb
MyWeb
统计节点个数
题目描述
给出一棵有向树,一共有 N(1<N≤1000)个节点,如果一个节点的度(入度+出度)不小于它所有儿子以及它父亲的度(如果存在父亲或儿子),那么我们称这个节点为 p 节点,现在你的任务是统计 p 节点的个数。
如样例,第一组的 p 节点为 1,2,3;第二组的 p 节点为 0。
输入格式
第一行为数据组数 T(1≤T≤100)。
每组数据第一行为 N 表示树的节点数。后面为 N−1 行,每行两个数x,y(0≤x,y<N),代表 y 是 x 的儿子节点。
输出格式
每组数据输出一行,为一个整数,代表这棵树上 p 节点的个数。
输入样例
2
5
0 1
1 2
2 3
3 4
3
0 2
0 1
输出样例
3
1
中序遍历序列
题目描述
给出一个序列,判断该序列是不是某二叉搜索树的中序遍历序列,如果是输出"Yes",否则输出"No"。
一颗带权二叉树是一颗二叉搜索树(二叉排序树),当且仅当对于任意一个节点,他的左子树中的所有权值小于当前节点的权值,且它的右子树中的所有权值均大于当前节点的权值。
输入格式
第一行 T(T≤10)代表数据组数。
每组数据包括两行:
第一行为一个整数 N(1≤N ≤400),表示序列的长度。
第二行包含 N 个整数,表示这个这个序列,序列中的数的 x 范围为(1≤x≤100000)。
输出格式
每组数据,如果是二叉搜索树的中序遍历序列输出"Yes",否则输出"No"。
输入样例
2
4
1 2 3 4
4
1 3 2 4
输出样例
Yes
No
最小距离查询
题目描述
给定一个由小写字母 a 到 z 组成的字符串 S,其中第 i 个字符为 S[i](下标从 0开始)。你需要完成下面两个操作:
INSERT c
其中 c 是一个待输入的字符。你需要在字符串的末尾添加这个字符。保证输入 的字符同样是 a 到 z 之间的一个小写字母。
QUERY x
其中 x 是一个输入的整数下标。对于这个询问,你需要回答在 S 当中和 S[x]相等且与 x 最近的距离。输入保证 x 在当前字符串中合法。
例如 S = “abcaba”,如果我们操作:
INSERT a
则在 S 的末端加一个字符 a,S 变成"abcabaa"。
接下来操作
QUERY 0
由于 S[0] = a,在 S 中出现的离他最近的 a 在下标为 3 的位置上,距离为 3 - 0 = 3。因此应当输出 3。
接下来,如果
QUERY 4
S[4] = b,S 中离它最近的 b 出现在下标为 1 处,距离为 4 - 1 = 3。同样应当输出 3。
给定初始字符串 S 和若干操作,对于每个 QUERY,你需要求出相应的距离。
HINT 由于输入数据较大,C/C++中推荐使用 scanf 进行读入以获得更快的读入
速度。同时请注意算法复杂度。
输入格式
输入的第一行是一个正整数 T(T≤20),表示测试数据的组数。
每组输入数据的第一行是一个初始串 S。第二行是一个正整数m(1≤m≤100000),表示总共操作的数量。接下来 m 行,每行表示一个操作。
操作的格式如上所述。 数据保证在任何情况下,S 的长度不会超过 100000。
输出格式
对于每个 QUERY,输出所求的最小距离。如果 S 中其它位置都不存在和它相同的字符,输出-1。
输入样例
2
axb
3
INSERT a
QUERY 0
QUERY 1
explore
3
INSERT r
QUERY 7
QUERY 1
输出样例
3
-1
2
-1
矩阵幂
题目描述
给你一个 n*n 的矩阵
求其矩阵的 k 次幂,即 Pk
输入格式
第一行,一个整数 T(0<T<=10),表示要求矩阵的个数。
接下来有 T 组数据,每组数据格式如下:
第一行:两个数据 n(2<=n<=10)、k(1<=k<=5),两个数字之间用一个空格隔开,其中 n 表示状况空间的总数,k 表示待求的转移概率矩阵的步数。接下来有 n 行 n 列个正整数,其中,第 i 行第 j 列表示 pij,(0<=pij<=10)。另外,数据保证最后结果不会超过 10^8。
输出格式
输出为 T 组数据。
每组数据为已知矩阵的 k 次幂,格式为:
n 行 n 列个正整数,每行数之间用空格隔开,注意,每行最后一个数后面不应该有多余的空格。
输入样例
3
2 2
9 8
9 3
3 3
4 8 4
9 3 0
3 5 7
5 2
4 0 3 0 1
0 0 5 8 5
8 9 8 5 3
9 6 1 7 8
7 2 5 7 3
输出样例
153 96
108 81
1216 1248 708
1089 927 504
1161 1151 739
47 29 41 22 16
147 103 73 116 94
162 108 153 168 126
163 67 112 158 122
152 93 93 111 97
二叉排序树
题目描述
二叉排序树,也称为二叉查找树。可以是一颗空树,也可以是一颗具有如下特性的非空二叉树:
-
若左子树非空,则左子树上所有节点关键字值均不大于根节点的关键字值;
-
若右子树非空,则右子树上所有节点关键字值均不小于根节点的关键字值;
-
左、右子树本身也是一颗二叉排序树。
现在给你 N 个关键字值各不相同的节点,要求你按顺序插入一个初始为空树的 二叉排序树中,每次插入后成功后,求相应的父亲节点的关键字值,如果没有父亲节点,则输出-1。
输入格式
第一行,一个数字 N(N<=100),表示待插入的节点数。
第二行,N 个互不相同的正整数,表示要顺序插入节点的关键字值,这些值不超过 108。
输出格式
输出共 N 行,每次插入节点后,该节点对应的父亲节点的关键字值。
输入样例
5
2 5 1 3 4
输出样例
-1
2
2
5
3
IP 数据包解析
题目描述
我们都学习过计算机网络,知道网络层 IP 协议数据包的头部格式如下:
其中 IHL 表示 IP 头的长度,单位是 4 字节;总长表示整个数据包的长度,单位是 1 字节。
传输层的 TCP 协议数据段的头部格式如下:
头部长度单位为 4 字节。
你的任务是,简要分析输入数据中的若干个 TCP 数据段的头部。 详细要求请见输入输出部分的说明。
输入格式
第一行为一个整数 T,代表测试数据的组数。
以下有 T 行,每行都是一个 TCP 数据包的头部分,字节用 16 进制表示,以空 格隔开。数据保证字节之间仅有一个空格,且行首行尾没有多余的空白字符。
保证输入数据都是合法的。
输出格式
对于每个 TCP 数据包,输出如下信息:
Case #x,x 是当前测试数据的序号,从 1 开始。
Total length = L bytes,L 是整个 IP 数据包的长度,单位是 1 字节。
Source = xxx.xxx.xxx.xxx,用点分十进制输出源 IP 地址。输入数据中不存在IPV6 数据分组。
Destination = xxx.xxx.xxx.xxx,用点分十进制输出源 IP 地址。输入数据中不存在 IPV6 数据分组。
Source Port = sp,sp 是源端口号。
Destination Port = dp,dp 是目标端口号。
对于每个 TCP 数据包,最后输出一个多余的空白行。
具体格式参见样例。
请注意,输出的信息中,所有的空格、大小写、点符号、换行均要与样例格式保持一致,并且不要在任何数字前输出多余的前导 0,也不要输出任何不必要的空白字符。
输入样例
2
45 00 00 34 7a 67 40 00 40 06 63 5a 0a cd 0a f4 7d 38 ca 09 cd f6 00 50 b4 d7 ae 1c
9b cf f2 40 80 10 ff 3d fd d0 00 00 01 01 08 0a 32 53 7d fb 5e 49 4e c8
45 00 00 c6 56 5a 40 00 34 06 e0 45 cb d0 2e 01 0a cd 0a f4 00 50 ce 61 e1 e9 b9 ee
47 c7 37 34 80 18 00 b5 81 8f 00 00 01 01 08 0a 88 24 fa c6 32 63 cd 8d
以第一行为例(为 16 进制数)一位 16 进制数需要 4 位 2 进制数表示,TCP 报文一行 32 位
ip 首部
45 00 00 34 //0034 为总长度 52
7a 67 40 00
40 06 63 5a
0a cd 0a f4 //源地址 10.205.10.244
7d 38 ca 09 //目的地址 125.56.202.9
tcp 首部
cd f6 00 50 //源端口 cdf6 即 52726 目的端口 0050 即 80
b4 d7 ae 1c
9b cf f2 40
80 10 ff 3d
fd d0 00 00
01 01 08 0a
32 53 7d fb
5e 49 4e c8
输出样例
Case #1
Total length = 52 bytes
Source = 10.205.10.244
Destination = 125.56.202.9
Source Port = 52726
Destination Port = 80
Case #2
Total length = 198 bytes
Source = 203.208.46.1
Destination = 10.205.10.244
Source Port = 80
Destination Port = 52833
打印字符串
题目描述
老师有一个问题想考考 mabo,但是 mabo 不会,所以想请你来帮帮忙。
问题如下:
给一串字符串,统计其中某个字符的个数。
输入格式
首先输入一个整数 T,表示一共有 T 组数据 0<T<=10。
接下来每行一个字母 x(x 为’a’-'z’或者‘A’-‘Z’)。
然后下面一行输入一个字符串 s(0<s 的长度<1000)。
输出格式
统计这个字母在这个字符串中出现的次数
输入样例
2
a
absd
b
bbssb
输出样例
1
3
二叉树的层数
题目描述
老师有一个问题想考考 mabo,但是 mabo 不会,所以想请你来帮帮忙。
问题如下:
给一个二叉树请把这个棵二叉树按层来打印。如果为相同层,需要从左到右打印。一个节点是先添加左节点后添加右节点,即添加顺序与输入顺序一致。
输入格式
首先输入一个整数 T,表示一共有 T 组数据 0<T<=10
再输入两个整数 N,M(0<=N,M<=100)
表示下面有 N 行,这个树有 M 个节点(1 号节点是这棵树的根节点)
每一行两个整数 a,b(1<=a,b<=M)
表示节点 a 的父亲是节点 b
输出格式
对于每组
先输出一行 "Qi:"表示第 i 个问题
然后接下来输出每个问题二叉树每层的节点,在同一层的节点用空格分开,同一层输出在一行(每一行末尾没有空格),不同的层输出在不同行(入下面Sample Ouput 所示)
输入样例
2
4 5
2 1
3 1
4 2
5 4
1 2
2 1
输出样例
Q1:
1
2 3
4
5
Q2:
1
2
IP 地址
题目描述
我们都学过计算机网络,了解 IPV4 地址的点分十进制表示法。
你的任务很简单:判断一个字符串是否是一个合法的点分十进制表示的 IPV4 地址。
最低的 IP 地址是 0.0.0.0,最高的 IP 地址是 255.255.255.255。
PS :方便起见,认为形似 00.00.00.00 的 IP 地址也是合法的。
输入格式
第一行是一个整数 T,代表输入还剩下 T 行
以下的 T 行,每行都是一个字符串(不含空白字符)。字符串的长度保证不超过 15,不小于 1.
输出格式
对于每个字符串,输出一行。
如果它是一个合法的 IPV4 地址,输出 Yes。
否则,输出 No。
输入样例
3
59.64.130.18
f.a.t.e
1.23.45.678
输出样例
Yes
No
No
非平方等式
题目描述
考虑等式:
x2 + s(x)x - n = 0,
其中 x,n 是正整数,s(x)是个函数,其值等于 x 在十进制下所有数字的和。
现给出整数 n 的大小,请你求出最小的满足条件的正整数 x。
输入格式
输入仅包含一个整数 n (1 ≤ n ≤ 1018) .
输出格式
如果不存在这样的 x,请输出-1;否则请输出满足条件的最小的整数 x (x > 0)。
输入样例
2
输出样例
1
最远距离
题目描述
正义的伙伴褋祈和葬仪社的机器人 Fuyuneru 正在被邪恶的 GHQ 部队追杀。眼看着快要逃不掉了,祈就把重要的东西塞到了机器人体内,让它先跑,自己吸 引火力。
假设 Fuyuneru 带上东西开始逃跑时所处的点为原点,朝向为正北。操纵FuyuNeru 的指令有如下四种:
right X: X 是 1-359 之间的整数,Fuyuneru 的前进方向顺时针转 X 度。
left X: X 是 1-359 之间的整数,Fuyuneru 的前进方向逆时针转 X 度。
forward X: X 是整数(0<=X<=1000),Fuyuneru 向当前朝向前进 X 米。
backward X: X 是整数(0<=X<=1000),Fuyuneru 向当前朝向后退 X 米。
现在祈向 Fuyuneru 体内输入了 N(1<=N<=50)个这样的指令。可是由于此前Fuyuneru 被 GHQ 部队击中,它出了一点小问题:这 N 个指令执行的顺序是不确定的。
问:Fuyuneru 最远可能逃出多远?
即,Fuyuneru 在执行完 N 条指令之后,距离原点最远的可能距离是多少?
输入格式
第一行是一个整数 T,代表测试数据有 T 组。
每组测试数据中,第一行是一个整数 N,代表指令有 N 条;
随后紧跟 N 行,每一行代表一个指令(格式保证是上述四种中的一种,数据保证合法)
输出格式
对于每组数据,输出一行:最远的可能逃亡距离,精确到小数点后 3 位。
输入样例
3
3
forward 100
backward 100
left 90
4
left 45
forward 100
right 45
forward 100
6
left 10
forward 40
right 30
left 10
backward 4
forward 4
输出样例
141.421
200.000
40.585
反转单词
题目描述
给出一句英文句子(只由大小写字母和空格组成,不含标点符号,也不会出现连 续的空格),请将其中的所有单词顺序翻转
输入格式
多组数据,以 EOF 结束。
每行一句英文句子(确保只由大小写字母和空格组成,不含标点符号,也不会出现连续的空格,字符串总长度 1000 以内)
输出格式
每组数据输出一行,为反转后的字符串
输入样例
It is a apple
输出样例
apple a is It
912 星球的研究生
题目描述
最近 912 星球的研究生入学了,912 星球的教务处因此忙的焦头烂额,要求 yzr做一个信息管理系统登陆查询研究生的考试成绩。但是 yzr 太弱了,你能帮帮忙么?
912 星球的每一位研究生都有一个名字 id 和一份星球考研成绩,可喜的是都是 自然数。
信息管理系统需要完成两个命令:
1.“Insert 空格 id_number 空格 score_number”命令,表示登陆一个名字 id 为 id_number,分数为 score_number 的同学的信息。其中 id 和 score 都是自然数,分别代表一位研究生的 id 和成绩(中间有一个空格)。
2.“Find id_number”命令,表示查询一个名字 id 为 id_number 的研究生的成绩,需要输出对应的成绩
输入格式
首先输入一个整数 T,表示一共有 T 组数据(0< T≤ 10)
每组数据的第一行包括一个数字 n,表示这组数据一共 n 行,并且保证最多只有 n 位研究生,0< n≤ 100。
接下来每一行都有一条命令,形式如上所述。
不会有两名拥有同样名字 id 的同学,并且保证名字 id 是自然数且小于等于1000,得分为自然数且小于等于 10000
输出格式
对于每一组数据中的每一条命令:
Insert 命令无需任何对应输出
Find 命令需要输出一行,形如“name:name_id 空格 score:score_number”,表示找到一个名字 id 为 id_number,分数为 score_number 的同学的信息。如果没有找到输出“No result!”。
每个输出占一行,每组数据之间不用留空行
输入样例
2
2
Insert 0 10
Find 0
5
Insert 1 1
Find 2
Insert 2 2
Find 2
Find 1
输出样例
name:0 score:10
No result!
name:2 score:2
name:1 score:1
寻找宝藏****寻找宝藏
题目描述
有一棵多叉树 T,你在树根处,宝藏在某一叶子节点 L。现在你沿着树枝向叶子方向走去,从不回头,如果遇到树叉节点,你等概率地挑选一个分支继续走。请问,在给定 T,L 的情况下,你有多大概率拿到宝藏?
输入格式
第一行,整数 N,M,L(1< N< 1000,0< M< 1000,0< L< N),分别代表树 T 上的节点数、树枝的个数,宝藏所在节点。树根为 0 号结点。
然后有 M 行,每行两个整数 A,B(0≤ A,B< N)代表从节点 A 到节点 B 有一条树枝。可以假设节点 A 总是更靠近树根。
输出格式
所求的概率,输出四舍五入到 6 位小数,然后换行。
输入样例
6 5 5
0 1
1 3
0 2
2 4
2 5
输出样例
0.250000
字符串操作
题目描述
大家平时都会用到字符串,现在有几种字符串操作,需要你用这几种操作处理下字符串。、
HINT
字符串下标从 0 开始,所有操作的数据范围都合乎规范。
输入格式
多组数据,以 EOF 结束。
第一行一个字符串,字符串长度大于 0,并且小于等于 200。
第二行一个数字 t,(0<t<=200)。
下面 t 行,每行表示一种操作。
共有两种操作,每行数据的第一个数表示操作的种类:
翻转操作:第一个是一个数字 0,然后两个数字 i 和 len,翻转从下标 i 长度为len 的子串。
替换操作:第一个是一个数字 1,然后两个数字 i 和 len,接着一个长度为 len 的字符串 str,用 str 替换从下标 i 长度为 len 的子串。
字符串操作后会更新,旧的字符串被舍弃。(详见 sample)
输出格式
每个操作之后输出生成的新的字符串
输入样例
bac
2
0 0 3
1 1 2 as
输出样例
cab
cas
虚数
题目描述
给你一个复数集合{Aj+i*Bj},保证 Aj 和 Bj 都是整数,初始为空集。
每次会给你如下两种操作中的一种:
-
“Insert x+iy”,其中 x,y 都是整数。表示在集合中加入一个复数 x+iy,同时输出此时集合的大小;
-
“Pop”。如果集合为空集直接返回“Empty!”,如果有元素则以"x+iy"的形式 显示集合中模值最大的复数,然后将该元素从集合中删除,之后在第二行显示操作之后的集合大小,如果为空集则显示“Empty!”。
输入格式
第一行只有一个数 T,代表 case 数。0<=T<=10
每一组 case:
第一行有一个整数 n,表示这组 case 中一共有 n 条命令 0<n<=100
接下来 n 行每行有一个命令,命令如上所述
保证不会输入两个模值同样的元素,并保证实部虚部都大于 0,小于 1000。
输出格式
依照上述原则输出每一个命令对应的输出
如果输入命令是 Insert 命令,则对应的输出占一行为集合大小;
如果输入命令是 Pop 命令,则对应的输出占一行或者两行,为模值最大的复数和集合大小。
请注意,输出集合大小的格式为"Size:空格 x 回车",x 为集合大小
输入样例
1
5
Pop
Insert 1+i2
Insert 2+i3
Pop
Pop
输出样例
Empty!
Size: 1
Size: 2
2+i3
Size: 1
1+i2
Empty!
中序遍历树
题目描述
给一棵树,你可以把其中任意一个节点作为根节点。
每个节点都有一个小写字母,中序遍历,得到一个字符串,求所有能得到的字符串的字典序最小串。
因为这棵树不一定是二叉树,所以中序遍历时,先中序遍历以节点序号最小的节点为根的子树,然后再遍历根节点,最后根据节点序号从小到大依次中序遍历剩下的子树。
意思就是请枚举所有的点为根,然后中序遍历
最后输出所有结果中字典序最小的
比如说第二组数据
以 0 为根时结果为 bacd
以 1 为根时结果为 cadb
以 2 为根时结果为 badc
以 3 为根时结果为 bacd
所以字典序最小的是 bacd
输入格式
多组数据,以 EOF 结束。
第一行一个数 n(0<n<=100),表示树的节点的个数,节点从 0 开始。
然后一个长度为 n 的串,第 i(0<=i<n)个字符表示节点 i 的字符。
接下来 n-1 行,每行两个数 a,b,(0<=a,b<n),表示 a 和 b 之间有一条无向边。
输出格式
题中要求的最小的字符串
输入样例
3
bac
0 1
1 2
4
abcd
0 1
0 2
0 3
输出样例
bac
bacd
众数
题目描述
给定一个长度为 N 的非降数列,求数列中出现次数最多的数。如果答案不唯一,输出其中最小的数。
输入格式
输入数据第一行是一个整数 T(1≤T≤100),表示测试数据的组数。对于每组测试数据:
第一行是一个正整数 N(1≤N≤100),表示数列长度。
第二行有 N 个整数,整数之间用空格隔开,所有的整数都不超过 105,表示这个数列。
输出格式
对于每组测试数据,输出一个整数。
输入样例
2
4
1 1 1 2
5
1 1 2 2 3
输出样例
1
1
旋转图像
题目描述
在图形学中,我们经常需要对具体的图像进行一些处理。在这个问题中,你的任务是将一幅只包含 01 像素点的图片进行顺时针旋转。旋转的角度仅包含 0 度,90 度,180 度和 270 度。
输入格式
输入的第行是一个整数 T (T≤50),表示输入的数据组数。
每组测试数据的第一.行是两个整数 N 和 M(1≤N,M≤50),表示图片的高度和宽度。
接下来 N 行,每行是一个长度为 M 的 01 串,表示图片的像素点。最后一行是一个整数 angle,表示旋转的角度。
输出格式
对于每组测试数据,输出旋转后得到的图片。请注意不要输出多余的空格或空行。
输入样例
2
2 3
111
000
90
3 3
111
101
111
180
输出样例
01
01
01
111
101
111
题目描述
给定一个无向网络 G,网络中共有 N 个节点(从 1 编号到 N), M 条边,求网络的核。
网络的核: 到网络中其他节点的距离之和最小的节点。且对于不连通的两点,它们之间的距离为 N。
如果有多组解,输出编号最小的节点。
输入格式
输入的第一行是一个整数 T(T≤25),表示输入的数据组数。
对于每组测试数据:
第一行有两个整数 N,M(1≤N≤50, 0≤M≤N*(N-1),表示网络中有 N 个点,M 条边。
接下来 M 行,每行两个整数 u,v(1≤u,v≤N, u≠v),表示点 u 和点 v 之间有一条 距离为 1 的边。任意两个点之间最多只会有一条边相连。
输出格式
对于每组测试数据,输出网络的核。
输入样例
2
3 3
1 2
1 3
2 3
4 2
1 2
2 3
输出样例
1
2
Python List
题目描述
在 Python 中,List (列表)是一种非常重要的数据结构。它与 C/C++/Java 中的数组有些类似,但支持添加新元素时的动态扩展。
在这个问题中,你需要处理如下的几种对 List 的操作。
L=[]: 将名字为 L 的 List 清空。在这里,List 的名字是长度为 1 到 10 之间的字符串(只包括大小写字母)。如果 L 原来不存在,这个语句相当于定义了 一个名字为 L 的空列表。
L.append(x):向 L 的末端插入元素 x。为方便起见,这里的 x 只会是[0, 65536] 之间的整数。
L.sort():将 L 中的元素按升序排序。
L[id]:返回 L 中下标为 id(id≥0)的值。下标是从 0 开始计数的。
给定若干 Python 语句,你的任务是对于每个形如 L[id]的语句,输出它返回的值。
输入格式
输入数据包含多组测试数据。请注意各组测试数据之间是相互独立的。输入的第一行是一个整数 T(T≤100),表示测试数据的组数。
每组测试数据第一行是语句的数量 N (N≤100)。接下来 N 行,每行一个 python 语句。测试数据保证只会出现上述四种语句,语句中间不会出现空格。一个 List 在被使用前一定会被先定义。
输出格式
对于每个查询,输出查找的 L[id]的值。如果 id 超出了当前 List 的下标范围,输出一行 ERROR。
输入样例
2
5
a=[]
a.append(0)
a.append(1)
a[0]
a[1]
8
lista=[]
lista.append(123)
lista.append(65)
lista[0]
lista.sort()
lista[0]
listb=[]
listb[0]
输出样例
0
1
123
65
ERROR
分数加法
题目描述
求 2-a + 2-b,其中 a 和 b 均为正整数,结果请用最简分数表示。
输入格式
第一行为测试数据的组数 T(1<=T<=400)。请注意,任意两组测试数据之间是相互独立的。
每组测试数据一行,包含两个整数 a 和 b(2<=a,b<=20)。
输出格式
对于每组测试数据,在一行内输出结果,分子和分母用“/”隔开。
输入样例
2
2 4
3 2
输出样例
5/16
3/8
最小堆
题目描述
给定一棵带权二叉树,请判断它是不是一个最小堆。
一棵二叉树是一个最小堆,当且仅当对于树上任意一个节点,它的权值都小于或等于以它为根的子树中的所有权值。
输入格式
输入数据第一行是一个整数 T(1<=T<=100),表示测试数据的组数。
对于每组测试数据:
第一行是一个整数 N(1<=N<=100),表示树的节点个数。
接下来一行包含 N 个正整数,第 i 个整数 valuei(1<=valuei<=1000)表示编号 i 的点的权值。
接下来 N-1 行,每行两个整数 u 和 v(1<=u,v<=N, u!=v),表示节点 u 是节 点 v 的父节点。
测试数据保证给定的一定是一棵二叉树,并且节点 1 是树的根结点。
输出格式
对于每组测试数据,如果给定的树是一个最小堆则输出 Yes,否则输出 No。
输入样例
3
1
10
3
10 5 3
1 2
1 3
5
1 2 3 4 5
1 3
1 2
2 4
2 5
输出样例
Yes
No
Yes
进程管理
题目描述
在操作系统中,进程管理是非常重要的工作,每个进程都有唯一的进程标识(PID)。每个进程都可以启动子进程,此时我们称它为其子进程的父进程,除了 PID 为 0 的进程之外,每个进程有且只有一个父进程,在这个任务中,你需要实时维护操作系统运行中的三个基本操作:
FORK PID1 PID2:标识为 PID1 的进程启动了一个标识为 PID2 的子进程。
KILL PID:结束标识为 PID 的进程。请注意,与此同时所有 PID 的子进程也将同时结束。如果 PID 是不存在或已经结束的进程,则不做任何操作。
QUERY PID:查询标识为 PID 的进程是否仍然存在。
在初始状态下,系统只开启了 PID 为 0 的进程,并且在任何情况下该进程不 会结束。
输入格式
输入的第一行是一个整数 T(T<=50),表示输入的数据组数。
每组测试数据的第一行是一个整数 N(1<=N<=100),表示操作的数量。
每下来 N 行,每行按照上面的描述给出每个操作,输入保证所有的进程的 PID都不相同,且一个进程结束后不会被重新启动,所有 PID 都是[1,100]之间的整数。
输出格式
对于每次 QUERY 查询,如果进程存在,输出 Yes,不存在则输出 No
输入样例
2
5
FORK 0 1
QUERY 1
KILL 1
QUERY 1
QUERY 2
1
QUERY 0
输出样例
Yes
No
No
Yes
网络传输
题目描述
网络的高效互联与智能传输是提升海量用户服务请求映射效率的重要措施。在这个任务中,你要用最少的传输时间,将特定的数据源发送到指定的网络节点中。
我们给定的网络一共包含 N 个节点(从 1 到 N 编号),其中节点 1 为数据源。网络中有 M 条无向边(u,v,w),表示一条传输线连接节点 u 和节点 v,且数据通过这条传输线的平均时间为 w。由于传送机制的限制,当一个节点接收到数据之后,它只能选择与它互连的一个节点,并将数据转发到该节点。节121点 1 在初始化时只会发送一次数据,但在传输过程中它可以作为转发节点。
网络中有 k 个目标节点,你需要计算出该数据从节点 1 传送到所有 K 歌节点所需要的最短时间。注意目标节点可以按任意顺序进行传送,数据也可以多 次经过同一节点。
输入格式
输入数据第一行是一个整数 T(T<=5),表示测试数据的组数。
对于每组测试数据:
第一行是三个正整数 N,M,K(2<=N<=1000,1<=M<=N(N-1)/2,K<=10),分别表示节点数,边数和目标节点数。
接下来 M 行,每行三个整数 u,v,w(1<=u,v<=N, 0<=w<=1000,u!=v)。如上所述给出每条传输线。任意两个网络节点之间最多只会有一条边相连。
最后一行是 K 个整数,给出所有的目标节点的编号,所有目标节点的编号都在 2 到 N 之间。
输出格式
对于每组测试数据,输出数据传送到所有 K 个目标节点的最短时间。
输入样例
2
3 2 2
1 3 1
1 2 3
2 3
6 6 4
1 5 1
5 6 2
2 1 20
2 3 5
3 4 5
6 3 1
2 3 4 6
输出样例
5
19
奇偶求和
题目描述
给出 N 个数,求出这 N 个数,奇数的和以及偶数的和。
输入格式
第一行为测试数据的组数 T(1<=T<=50)。请注意,任意两组测试数据之间是相互独立的。
输出格式
每组数据输出两个数,即 N 个数中奇数之和和偶数之和,中间用空格隔开。
输入样例
2
5
1 2 3 4 5
5
1 1 1 1 1
输出样例
9 6
5 0
最长连续等差子数列
题目描述
给定-个长度为 N 的整数数列,你需要在其中找到最长的连续子数列的长度,并满足这个子数列是等差的。
注意公差小于或等于 0 的情况也是允许的。
输入格式
第一行为数据组数 T(1~100),表示测试数据的组数。
对于每组测试数据:
第一行是一个正整数 N (1~ 100),表示给定数列的长度
第二行是 N 个整数,其中第丨个整数 valuei (1<= valuei <= 10s)表示下标为 i 的 数字。
输出格式
对于每组测试数据,输出最长的连续等差子数列的长度。
输入样例
2
2
1 3
5
1 6 4 2 4
输出样例
2
3
最近公共祖先
题目描述
给出一棵有 N 个节点的有根树 TREE(根的编号为 1),对于每组查询,请输出树上节点 u 和 v 的最近公共祖先。
最近公共祖先:对于有向树 TREE 的两个结点 u,v。最近公共祖先 LCA(TREE u,v)表示一个节点 x,满足 x 是 u、v 的祖先且 x 的深度尽可能大。
输入格式
输入数据第一行是一个整数 T(1<=T<=100),表示测试数据的组数。
对于每组测试数据:
第一行是一个正整数 N(1<=N<=100),表示树上有 N 个节点。
接下来 N-1 行,每行两个整数 u,v(1<=u,v<=N),表示节点 u 是 v 的父节点。
接下来一行是一个整数 M(1<=M<=1000),表示查询的数量。
接下来 M 行,每行两个整数 u,v(11<=u,v<=N),表示查询节点 u 和节点 v 的最近公共祖先。
输出格式
对于每个查询,输出一个整数,表示最近公共祖先的编号。
输入样例
2
3
1 2
1 3
1
2 3
4
1 2
1 3
3 4
2
2 3
3 4
输出样例
1
1
3
中位数
题目描述
给定个长度为 N 的非降数列,求数列的中位数,中位数:当数列的项数 N 为奇数时,处 f 中间位置的变量值即为中位数:当 N 为偶数时,中位数则为处于中间位置的两个数的平均数。
输入格式
输入数据第一行是一个整数 T(1 <T < 100),表示测试数据的组数。对三每组测试数据:
第一行是一个正整数 N(1<N< 100),表示数列长度。
第二行有 N 个整数,数之间用空格限开,所有的整数都不超过 105,表示这个数
列。
输出格式
对于每组测试数据,输出数列的中位数。请不要输出小数点末尾多余的 0。
输入样例
2
4
1 1 2 2
5
1 1 2 2 3
输出样例
1.5
2
内存分配
题目描述
在操作系统中,内存分配是非常重要的工作。
已知内存空间由 N 个内存块组成,这些内存块从 1 到 N 编号。
进行内存分配时,操作系统将选择一块大小足够的内存全部分配给请求内存的进程。例如,当进程请求 10MB 的内存时,操作系统必须向该进程分配一个不小于 10MB 的内存块。内存块不能重复分配。
操作系统有三种基本的分配方式,分别为:
首次适应:从 1 号到 N 号内存块依次查找,自到找到第一 块足够大的月未分配出去的内存块,将其分配绘进程。
最佳适应:找到当前未分配出去且大小足够的内存块中最小的内存块分配进程。
最差适应:找到当前未分配出去且大小足够的内有块中最小的内有块分配给进程。
其中,最佳适应方式是应用最为广泛。现在,操作系统要依次交理 M 个进程的内存清求,请按照最佳适应方式分配内存,并输出相应的内存块的大小。如果,没有大小足够的内存块可以满足兰前清求,则输出"NULL"(不包含引号),并跳过该诗求
输入格式
输入数据的第一行是测试数据组数 T(T ≤ 20)每组数据由 4 行构成:
第一行为一个整数 N(1≤N≤100);表示有 N 个内存块
第二行有 N 个整数,第 i 个整数表示第 i 块内存块的大小
第三行为一个整数 M(1≤M≤100),表示有 M 个请求
第四行有 M 个整数,表示进程所请求的内存空间。
输出格式
每组数据输出一行,每行有 M 个数,表示操作系统采月最住适应方式,依次分
配给进程的内存块大小;
如果没有可用内存块,输出"NULL"(不包含引号)
不要输山多余的行尾空格。
输入样例
2
4
7 5 10 3
2
4 6
4
3 5 9 10
3
5 12 6
输出样例
5 7
5 NULL 9
图像识别
题目描述
在图像识别中,我们经常需要分析特定图像中的些特征,而其中很重要的点就是识别出图像的多个区域。在这个问题中,我们将给定一幅 N x M 的图像,其中每个 1 x 1 的点都用一个[0, 255]的值来表示他的 RGB 颜色。如果两个相邻的像素点颜色差值不超过 D.我们就认为这两个像素点属于豆一个区域。对于一个 像素点(x,y),以下这 8 个点(如果存在)是与它相邻的: (x 一 1,y 一 1),(x 一 1,y),(x 一 1,y + 1),(x,y 一 1),(x,y + 1),(x + 1,y- 1),(x + 1,y),(x +1,y+ 1)。
你的任务是写一个程序,分辨出给定图像中一共被分为多少个区域。
输入格式
输入数据包含多组测试数据。
输入的第一行是一个整数 T (T ≤ 100),表示测试效据的组数,每组测试数据的第一行是三个整数 N,M,D(1≤N,M≤100, 0≤D≤255),意义知上所述。
接下来 N 行,每行 M 个整数,表示给定图像的每人像素点颜色。
输出格式
对于每组测试数据输出一行,即图像中的区域数量
输入样例
2
3 3 0
1 1 1
0 1 0
0 1 0
3 4 1
10 11 12 13
9 8 7 6
2 3 4 5
输出样例
3
1