2025年北京大学计算机考研复试机试真题 - PGCode考研平台

最后更新:2025-12-08

2025年北京大学计算机考研复试机试真题

本文整理北京大学计算机考研机试真题,并提供详细解析与代码实现,帮助同学们了解保研机试的难度与题型分

01 最小生成树

题目描述

给定一张 $n$ 个点的完全图。

图中所有边的边权均为 $0/1$,且有且仅有 $m$ 条边边权为 $1$。

求解该完全图的最小生成树,你只需要输出最小生成树的边权和即可。

输入格式

第一行两个数字 $n$, $m$ 表示点数,以及边权为 $1$ 的边数。

$(m \leq \min{200000, \frac{n(n-1)}{2}})$

接下来 $m$ 行,一行两个数字 $a[i]$, $b[i]$,表示连接 $a[i]$, $b[i]$ 的边,其边权为 $1$ $(1 \leq a[i] < b[i] \leq n)$。

保证输入的边两两不同。

输出格式

一行一个数字,表示最小生成树的边权和。

输入样例

6 11
1 3
1 4
1 5
1 6
2 3
2 4
2 5
2 6
3 4
3 5
3 6

输出样例

2

打怪救公主

题目描述

公主被魔王抓起来关在了迷宫的某处,骑士想要拯救公主,也进入了迷宫。

但是魔王不会轻易让骑士拯救公主,魔王在迷宫中安排了许多怪兽。

每个怪兽都有血量,骑士也有初始血量 $ t $,骑士打败怪兽后血量的减少量为怪物的血量值,血量减到 $ 0 $,骑士会死去。

迷宫由 $ m \times n $ 个方块组成,每个方块有墙或者路或者怪物,骑士在其中一个方块上,他每个时间单位可以四个方向(上、下、左、右)走到相邻方格,若遇到怪物,必须打败怪物才能继续前进。

请帮忙判断骑士能否成功拯救公主,如果能,给出骑士还剩的最大血量。

输入格式

第一行为三个整数 $ m $、$ n $ 和 $ t $,$ t $ 表示骑士的初始血量。

第 $ 2 $ 至 $ m+1 $ 行描述了迷宫,迷宫以 $ m $ 行 $ n $ 列的方格组成,若方格为 $ . $ 则表示骑士可以通过,若方格为 $ # $ 则表示墙,骑士不能通过,若方格为数字则表示怪物,数字为怪物的血量,保证怪物的血量小于 $ 10 $(一位数)。

$ * $ 表示了骑士当前所在的位置,$ + $ 表示公主被囚禁的位置。

输出格式

若骑士能成功拯救公主,则输出骑士走到公主所囚禁方格所剩最大血量,否则输出 $ 0 $。

输入样例

5 6 10
..*...
.#2###
5#..4#
.##9.#
.#+..#

输出样例

4

最低通行费

题目描述

一个商人穿过一个 $N \times N$ 的正方形的网格,去参加一个非常重要的商务活动。

他要从网格的左上角进,右下角出,每穿越中间 $1$ 个小方格,都要花费 $1$ 个单位时间。

商人必须在 $(2N-1)$ 个单位时间穿越出去。

而在经过中间的每个小方格时,都需要缴纳一定的费用。

这个商人期望在规定时间内用最少费用穿越出去。

请问至少需要多少费用?

注意:不能对角穿越各个小方格(即,只能向上下左右四个方向移动且不能离开网格)。

输入格式

第一行是一个整数,表示正方形的宽度 $N$ $(1 \leq N < 100)$;

后面 $N$ 行,每行 $N$ 个不大于 $100$ 的整数,为网格上每个小方格的费用。

输出格式

输出一个整数,表示至少需要的费用。

输入样例

5
1  4  6  8  10
2  5  7  15 17
6  8  9  18 20
10 11 12 19 21
20 23 25 29 33

输出样例

109

冰阔落

题目描述

老王喜欢喝 $冰阔落$。

初始时刻,桌面上有 $n$ 杯阔落,编号为 $1$ 到 $n$。

老王总想把其中一杯阔落倒到另一杯中,这样他一次性就能喝很多很多 $阔落$,假设杯子的容量是足够大的。

有 $m$ 次操作,每次操作包含两个整数 $x$ 与 $y$。

若原始编号为 $x$ 的阔落与原始编号为 $y$ 的阔落已经在同一杯,请输出 $"Yes"$;否则,我们将原始编号为 $y$ 所在杯子的所有阔落,倒往原始编号为 $x$ 中的阔落所在的杯子,并输出 $"No"$。

最后,老王想知道哪些杯子有 $冰阔落$。

输入格式

有多组测试数据,少于 $5$ 组。

每组测试数据,第一行两个整数 $n$, $m$ ($n$, $m$ <= $50000$)。

接下来 $m$ 行,每行两个整数 $x$, $y$ ($1$ <= $x$, $y$ <= $n$)。

输出格式

每组测试数据,前 $m$ 行输出 $"Yes"$ 或者 $"No"$。

第 $m+1$ 行输出一个整数,表示有 $阔落$ 的杯子数量。

第 $m+2$ 行有若干个整数,从小到大输出这些杯子的编号。

输入样例

3 2
1 2
2 1
4 2
1 2
4 3

输出样例

No
Yes
2
1 3
No
No
2
1 4

田忌赛马

题目描述

在田忌赛马的故事中,孙膑用自己的 $下等马$ 对战对手的 $上等马$,自己 $上等马$ 对阵对手的 $中等马$,自己的 $中等马$ 对阵对手的 $下等马$,从而赢得了胜利。

现在即将进行的是 $N$ 匹马的赛马比赛,双方队伍的马各分为 $N$ 等。

已知只有当我方马的等级比对方马等级高 $X$ 等以上(包含 $X$)时,我方才可以取得这场比赛的胜利。

如果在 $N$ 场比赛中我方的胜场数大于对方,则我方取得最终的胜利。

现在已知对方这 $N$ 场比赛的出战方案,请计算所有令我方最终获胜的出战方案。

输入格式

第一行两个整数,$N$ 和 $X$。

$N \leq 9$, $0 \leq X$ 第二行 $N$ 个正整数,$A(1) \ldots A(N)$。

$A(i)$ 表示第 $i$ 场比赛对方马的等级,$1 \leq i \leq N$。

等级越高越强

输出格式

按字典序输出所有我方最终获胜的方案,每个方案一行。

每行是 $N$ 个正整数,第 $i$ 个数表示我方第 $i$ 场比赛马的等级。

输入样例

3 1
3 2 1

输出样例

1 3 2

完整题目及在线评测:https://www.pgcode.cn/