智算学部 2025 级计科拔尖班选拔考试(机试)
试卷说明
重要提示:智算学部未公开发布试卷内容,本词条内容根据往届学生考场回忆整理,与原试题可能存在偏差,内容仅用于 考试形式参考;
- 考试科目:上机程序设计
- 考试时间:2025 年 9 月 14 日 14:00 ~ 16:00(需提前 15 分钟到达考场测试硬件设备、编译器情况)
- 考试地点:北洋园校区第 47 教学楼第二、三、五、六、八机房
- 卷面分数:100
- 成绩占比:20%
- 参加人数:443
答题说明
(1) 考生必须持有效考试证件(天津大学学生证或饭卡)提前 15 分钟入场,迟到 15 分钟者不得入场,取消考试资格。
(2) 考生要自觉维护考场秩序,遵守考场规则,严禁作弊。对考试作弊及其他违反考试纪律的学生,按照《天津大学学生考试工作规定》的相关规定处理。
(3) 闭卷测试,不允许使用任何参考资料及电子设备,允许使用草稿纸。
(4) 上机测试前公开测试地址、发放考试系统的账号密码,请确认账号密码可登录系统,必须使用自己的账号提交,其他账号无效。
(5) 只允许使用 C 语言、C++、Python 语言提交代码,考试系统提供 Dev C++、Codeblocks 和 Pycharm 集成开发环境,支持 C++ 14 和 STL,其他环境不支持,请提前熟悉 IDE 使用。
(6) 提交代码选择语言时请确认已在本地编译成功。选择 C 语言提交,需将源码文件命名为 .c 文件;选择 C++ 语言进行提交,需将源码文件命名为 .cpp 文件进行本地编译。
(7) 上机测试共 6 道题目,每道题目可多次提交,考试过程中 只反馈题面给出样例的测试结果(包括编译错误、运行错误、正确通过小数据、部分通过小数据等,“小数据” 仅包含题面给出的样例数据),小数据测试结果仅供参考(仅用于确认代码提交成功及编译运行成功)。正式测试数据于上机测试结束后进行评测,每道题目取考生所有该题的提交代码中的最高分,严禁恶意提交。
(8) 题目测试点一般按数据规模设定,通过部分测试点也可获得相应得分,注意所有测试数据均与题目中给出的样例不同,故程序可以运行出题目中给出的样例结果,也可能得 0 分。
(9) 代码编写过程中随时保存到 D 盘,防止计算机或程序意外故障需要重启造成代码丢失。
(10) 其他注意事项:提交代码时需要将代码中的 system("pause") 等调试用语句注释掉;允许使用头文件 bits/stdc++.h,但要注意斜杠为 '/',而不是 '\'(部分编译环境可通过编译,但提交以后进行评测时会编译错误)。
(11) 请严格按照题目要求的输入输出编写程序,不要输出非题目要求的提示性语句(比如输出 “请输入两个整数……” 等),多输出任何字符或者空格、换行不得分。
(12) 题目中给出的数据范围即为测试数据中的数据范围,不需要在程序里再进行数据范围的判断。
(13) 考试过程中有任何问题,包括题意问题请及时反馈给监考解决。
(14) 考试系统使用说明请参考:智能与计算学部 2024 年拔尖计划选拔上机测试须知。
注意:以下行为均属作弊行为,请同学们严格遵守考试规定。
(1) 使用别人的账号登录,如 A 使用 B 的账号登录,A 和 B 均判定为作弊。
(2) 同一账号在多台机器登录,如 A 账号在两台机器上都有登录记录,视为作弊。
(3) 使用相同或相似的代码提交(判重方法:系统查重 + 人工判定)。
(4) 一台机器同时登录多个账号。如 A 在自己机器上登录 B、C、D 的账号,则 A、B、C、D 均视为作弊。
(5) 考试过程中访问除考试平台以外的任何网络应用。
(6) 考试过程中使用无关电子设备(手机、U 盘、智能手表等)。
试卷题目
1. 判断三角形边长
现有 a, b, c 三个数,请判断这 3 个数是否可以构成三角形。
- 输入:3 个数(数值不超过变量类型上限)分别代表
a、b、c - 输出:可以构成三角形则输出
yes,否则输出no
例 1:
- 输入:1 1 1
- 输出:yes
例 2:
- 输入:1 2 3
- 输出:no
2. 计算所需炮弹数量
现有一部只能向一维方向发射的火炮,在该方向分布有 n 个目标,每个目标与火炮阵地的距离坐标(整数)记录在一个一维数组内。某新型炮弹的摧毁范围为 d,即落在距离 n 的位置时能摧毁 [n, n+d-1] 范围内的目标。现计划使用该炮弹打击数组上所有目标,请计算所需消耗的炮弹最小数量。
- 输入:第一行输入目标个数
n和炮弹摧毁范围d,第二行输入n个数值代表一维数组 - 输出:击中所有目标所需消耗的炮弹最小数量
例 1:
- 输入:4 3
- 输入:-2 -1 0 2
- 输出:2
- 解释:[-2, 0] 范围内的目标可用 1 个炮弹摧毁,坐标 2 的目标可用第 2 个炮弹摧毁
3. 计算序列元素修改次数
DNA 基因序列可以简化为只包含 A、C、G、T 4 种大写字母的字符串。现有 a 和 b 两个基因序列,如果想在 a 序列中找到一个完整的 b 序列,请计算最少要修改几次 a 序列中的元素值(每次只能改 1 个位置)。
- 输入:两行包含
A、C、G、T4 种大写字母的字符串,第一行代表a序列,第二行代表b序列 - 输出:修改
a序列元素所需要的最少次数,若无法实现则输出-1
4. 规划拉练路线
现有一块可划分为 n x m 个格子的拉练场地,每个格子充满了毒雾,踏入该格子将消耗一定血量值。军训队伍从场地左上角格子出发,每次行动只能向下或者向右移动 1 格。请计算队伍移动至场地右下角格子所需消耗的最少血量值。
- 输入:第一行输入场地长
n和宽m,第二行输入n x m个数值代表每个单元格所需消耗的血量值(从左上角到右下角) - 输出:移动至到右下角所需消耗的最少血量值
5. 计算两个矩形最小周长
现有两个面积之和为 s 的矩形,请分析可以构成这两个矩形的长值与宽值,计算两个矩形的最小周长之和
- 输入:两个矩形面积之和
s - 输出:符合条件的两个矩形的最小周长之和
6. 计算拔尖递增序列长度
现有一个由 n 个随机数组成的一维数组,其中某个元素的 拔尖递增序列 是指:从该元素出发向后遍历,找到能满足数值递增且没有数值重复的 最长 元素序列(元素的原位置可以不相邻)。
例如一维数组:
1 100 99 2 2 3 1
对于首个位置的 1 元素来说,向后遍历有 1 100、1 99、1 2 3 共 3 种序列满足递增的要求,而 1 2 3 最长,故 1 元素的 拔尖递增序列 是 1 2 3。
请计算该一维数组每个元素的 拔尖递增序列 长度。
- 输入:第一行输入数组长度
n,第二行输入n个数值代表一维数组 - 输出:数组每个元素的 拔尖递增序列 长度
例 1:
- 输入:7
- 输入:1 100 99 2 2 3 1
- 输出:3 1 1 2 2 1 1