第十六届蓝桥杯大赛软件赛省赛 C/C++ 大学 B 组

第十六届蓝桥杯大赛软件赛省赛 C/C++ 大学 B
第十六届蓝桥杯大赛软件赛省赛
C/C++ 大学 B
【选手须知】 gzg 大学竞赛君 提供
考试开始后,选手首先下载题目,并使用考场现场公布的解压密码解压试
题。
考试时间为 4 小时。考试期间选手可浏览自己已经提交的答案,被浏览的
答案允许拷贝。时间截止后,将无法继续提交或浏览答案。
对同一题目,选手可多次提交答案,以最后一次提交的答案为准。
选手必须通过浏览器方式提交自己的答案。选手在其它位置的作答或其它
方式提交的答案无效。
试题包含“结果填空”和“程序设计”两种题型。
结果填空题 :要求选手根据题目描述直接填写结果。求解方式不限。不要
求源代码。把结果填空的答案直接通过网页提交即可,不要书写多余的内容。
程序设计题 :要求选手设计的程序对于给定的输入能给出正确的输出结果。
考生的程序只有能运行出正确结果才有机会得分。
注意:在评卷时使用的输入数据与试卷中给出的示例数据可能是不同的。
选手的程序必须是通用的,不能只对试卷中给定的数据有效。
对于编程题目,要求选手给出的解答完全符合 GNU C/C++ 标准,不能使
用诸如绘图、 Win32API 、中断调用、硬件操作或与操作系统相关的 API
代码中允许使用 STL 类库。
注意 : main 函数结束必须返回 0
注意 : 所有依赖的函数必须明确地在源文件中 #include ,不能通
过工程设置而省略常用头文件。
所有源码必须在同一文件中。调试通过后,拷贝提交。
提交时,注意选择所期望的编译器类型。
第十六届蓝桥杯大赛软件赛省赛
1 第十六届蓝桥杯大赛软件赛省赛 C/C++ 大学 B
试题 A: 移动距离
本题总分: 5
【问题描述】
小明初始在二维平面的原点,他想前往坐标 (233 , 666) 。在移动过程中,他
只能采用以下两种移动方式,并且这两种移动方式可以交替、不限次数地使用:
1. 水平向右移动,即沿着 x 轴正方向移动一定的距离。
2. 沿着一个圆心在原点 (0 , 0) 、以他当前位置到原点的距离为半径的圆的圆
周移动,移动方向不限(即顺时针或逆时针移动不限)。
在这种条件下,他到达目的地最少移动多少单位距离?
你只需要输出答案四舍五入到整数的结果。
【答案提交】
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一
个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
试题 A: 移动距离
2 第十六届蓝桥杯大赛软件赛省赛 C/C++ 大学 B
试题 B: 客流量上限
本题总分: 5
【问题描述】
一家连锁旅馆在全国拥有 2025 个分店,分别编号为 1 2025 。随着节日
临近,总部决定为每家分店设定每日客流量的上限,分别记作 A 1 , A 2 , . . . , A 2025
这些上限并非随意分配,而是需要满足以下约束条件:
1. A 1 , A 2 , . . . , A 2025 必须是 1 2025 的一个排列,即每个 A i 均是 1 2025
之间的整数,且所有 A i 互不相同。
2. 对于任意分店 i j 1 i , j 2025 i 可等于 j ),它们的客流量上限 A i
A j 的乘积不得超过 i × j + 2025
这些约束旨在平衡各分店客流压力,确保服务质量和运营稳定性。
现在,请你计算这样的分配方案究竟有多少种。由于答案可能很大,你只
需输出其对 10 9 + 7 取余后的结果即可。
【答案提交】
这是一道结果填空题,你只需要算出结果后提交即可。本题的结果为一个
整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
试题 B: 客流量上限
3 第十六届蓝桥杯大赛软件赛省赛 C/C++ 大学 B
试题 C: 可分解的正整数
时间限制 : 1.0s
内存限制 : 256.0MB
本题总分: 10
【问题描述】
定义一种特殊的整数序列,这种序列由 连续递增的整数 组成,并满足以下
条件:
1. 序列长度至少为 3
2. 序列中的数字是连续递增的整数(即相邻元素之差为 1 ),可以包括正整
数、负整数或 0
例如, [1 , 2 , 3] [4 , 5 , 6 , 7] [ 1 , 0 , 1] 是符合条件的序列,而 [1 , 2] (长度不
足)和 [1 , 2 , 4] (不连续)不符合要求。
现给定一组包含 N 个正整数的数据 A 1 , A 2 , . . . , A N 。如果某个 A i 能够表示
为符合上述条件的连续整数序列中所有元素的和,则称 A i 是可分解的。
请你统计这组数据中可分解的正整数的数量。
【输入格式】
输入的第一行包含一个正整数 N ,表示数据的个数。
第二行包含 N 个正整数 A 1 , A 2 , . . . , A N ,表示需要判断是否可分解的正整数
序列。
【输出格式】
输出一个整数,表示给定数据中可分解的正整数的数量。
【样例输入】
3
3 6 15
试题 C: 可分解的正整数
4 第十六届蓝桥杯大赛软件赛省赛 C/C++ 大学 B
【样例输出】
3
【样例说明】
A i = 3 是可分解的,因为 [0 , 1 , 2] 的和为 0 + 1 + 2 = 3
A i = 6 是可分解的,因为 [1 , 2 , 3] 的和为 1 + 2 + 3 = 6
A i = 15 是可分解的,因为 [4 , 5 , 6] 的和为 4 + 5 + 6 = 15
所以可分解的正整数的数量为 3
【评测用例规模与约定】
对于 30 % 的评测用例, 1 N 100 1 A i 100
对于 100 % 的评测用例, 1 N 10 5 1 A i 10 9
试题 C: 可分解的正整数
5 第十六届蓝桥杯大赛软件赛省赛 C/C++ 大学 B
试题 D: 产值调整
时间限制 : 1.0s
内存限制 : 256.0MB
本题总分: 10
【问题描述】
偏远的小镇上,三兄弟共同经营着一家小型矿业公司 兄弟矿业 。公司旗
下有三座矿山:金矿、银矿和铜矿,它们的初始产值分别用非负整数 A B
C 表示。这些矿山的产出是小镇经济的核心,支撑着三兄弟和许多矿工家庭的
生计。
然而,各矿山的产值波动剧烈,有时金矿收益高而银矿、铜矿低迷,有时
则相反。这种不稳定性让公司收入难以预测,也常引发兄弟间的争执。为了稳
定经营,三兄弟设计了一个公平的产值调整策略,每年执行一次,每次调整时,
将根据当前的产值 A B C ,计算新产值:
1. 金矿新产值 A = B + 2 C
2. 银矿新产值 B = A + 2 C
3. 铜矿新产值 C = A + 2 B
其中, ⌊⌋ 表示向下取整。例如, 3 . 7 = 3 5 . 2 = 5
计算出 A B C 后,同时更新: A 变为 A B 变为 B C 变为 C ,作
为下一年调整的基础。
三兄弟认为这个方法能平衡产值波动,于是计划连续执行 K 次调整。现
在,请你帮他们计算,经过 K 次调整后,金矿、银矿和铜矿的产值分别是多
少。
【输入格式】
输入的第一行包含一个整数 T ,表示测试用例的数量。
接下来的 T 行,每行包含四个整数 A B C K ,分别表示金矿、银矿和
铜矿的初始产值,以及需要执行的调整次数。
试题 D: 产值调整
6 第十六届蓝桥杯大赛软件赛省赛 C/C++ 大学 B
【输出格式】
对于每个测试用例,输出一行,包含三个整数,表示经过 K 次调整后金
矿、银矿和铜矿的产值,用空格分隔。
【样例输入】
2
10 20 30 1
5 5 5 3
【样例输出】
25 20 15
5 5 5
【评测用例规模与约定】
对于 30 % 的评测用例, 1 T 100 1 A , B , C , K 10 5
对于 100 % 的评测用例, 1 T 10 5 1 A , B , C , K 10 9
试题 D: 产值调整
7 第十六届蓝桥杯大赛软件赛省赛 C/C++ 大学 B
试题 E: 画展布置
时间限制 : 1.0s
内存限制 : 256.0MB
本题总分: 15
【问题描述】
画展策展人小蓝和助理小桥为即将举办的画展准备了 N 幅画作,其艺术价
值分别为 A 1 , A 2 , . . . , A N 。他们需要从这 N 幅画中挑选 M 幅,并按照一定顺序
布置在展厅的 M 个位置上。如果随意挑选和排列,艺术价值的变化可能会过于
突兀,导致观众的观展体验不够流畅。
为了优化布置,他们查阅了《画展布置指南》。指南指出,理想的画展应使
观众在欣赏画作时,艺术价值的过渡尽量平缓。指南建议,选择并排列 M
画,应使艺术价值的变化程度通过一个数值 L 来衡量,且该值越小越好。数值
L 的定义为:
L =
M 1
i =1
| B 2 i +1 B 2 i |
其中 B i 表示展厅第 i 个位置上画作的艺术价值。
现在,他们希望通过精心挑选和排列这 M 幅画作,使 L 达到最小值,以
提升画展的整体协调性。请你帮他们计算出这个最小值是多少。
【输入格式】
输入共两行。
第一行包含两个正整数 N M ,分别表示画作的总数和需要挑选的画作数
量。
第二行包含 N 个正整数 A 1 , A 2 , . . . , A N ,表示每幅画作的艺术价值。
【输出格式】
输出一个整数,表示 L 的最小值。
【样例输入】
4 2
试题 E: 画展布置
8 第十六届蓝桥杯大赛软件赛省赛 C/C++ 大学 B
1 5 2 4
【样例输出】
3
【评测用例规模与约定】
对于 40 % 的评测用例, 2 M N 10 3 1 A i 10 3
对于 100 % 的评测用例, 2 M N 10 5 1 A i 10 5
试题 E: 画展布置
9 第十六届蓝桥杯大赛软件赛省赛 C/C++ 大学 B
试题 F: 水质检测
时间限制 : 1.0s
内存限制 : 256.0MB
本题总分: 15
【问题描述】
小明需要在一条 2 × n 的河床上铺设水质检测器。在他铺设之前,河床上已
经存在一些检测器。如果两个检测器上下或者左右相邻,那么这两个检测器就
是互相连通的。连通具有传递性,即如果 A B 连通, B C 连通,那么 A
C 也连通。现在他需要在河床上增加铺设一些检测器使得所有的检测器都互
相连通。他想知道最少需要增加铺设多少个检测器?
【输入格式】
输入共两行,表示一个 2 × n 的河床。
每行一个长度为 n 的字符串,仅包含 ‘#’ ‘.’ ,其中 ‘#’ 表示已经存在的
检测器, ‘.’ 表示空白。
【输出格式】
输出共 1 行,一个整数表示答案。
【样例输入】
.##.....#
.#.#.#...
【样例输出】
5
【样例说明】
其中一种方案:
.###....#
试题 F: 水质检测
10 第十六届蓝桥杯大赛软件赛省赛 C/C++ 大学 B
.#.######
增加了 5 个检测器
【评测用例规模与约定】
对于 100 % 的评测用例,保证 n 1000000
试题 F: 水质检测
11 第十六届蓝桥杯大赛软件赛省赛 C/C++ 大学 B
试题 G: 生产车间
时间限制 : 1.0s
内存限制 : 256.0MB
本题总分: 20
【问题描述】
小明正在改造一个生产车间的生产流水线。这个车间共有 n 台设备,构成
1 为根结点的一棵树,结点 i 有权值 w i 。其中叶节点的权值 w i 表示每单位时
间将产出 w i 单位的材料并送往父结点,根结点的权值 w i 表示每单位时间内能
打包多少单位成品,其他结点的权值 w i 表示每单位时间最多能加工 w i 单位的
材料并送往父结点。
由于当前生产线中某些结点存在产能不够的问题导致生产线无法正常运行,
即存在某些结点每单位时间收到的材料超过了当前结点的加工能力上限。小明
计划删除一些结点使得所有结点都能正常运行。他想知道删除一些结点后根结
点每单位时间内最多能打包多少单位的成品?
【输入格式】
输入共 n + 1 行。
第一行为一个正整数 n
第二行为 n 个由空格分开的正整数 w 1 , w 2 , ..., w n
后面 n 1 行,每行两个整数表示树上的一条边连接的两个结点。
【输出格式】
输出共一行,一个整数代表答案。
【样例输入】
9
9 7 3 7 1 6 2 2 7
1 2
1 3
试题 G: 生产车间
12 第十六届蓝桥杯大赛软件赛省赛 C/C++ 大学 B
2 4
2 5
2 6
6 7
6 8
6 9
【样例输出】
8
【样例说明】
删掉结点 4 9 后生产线满足条件,根结点 1 每单位时间将打包出 8 单位
的成品。
【评测用例规模与约定】
对于 20 % 的评测用例, 2 n 100
对于 100 % 的评测用例, 2 n 1000 w i 1000
试题 G: 生产车间
13 第十六届蓝桥杯大赛软件赛省赛 C/C++ 大学 B
试题 H: 装修报价
时间限制 : 1.0s
内存限制 : 256.0MB
本题总分: 20
【问题描述】
老王计划装修房子,于是联系了一家装修公司。该公司有一套自动报价系
统,只需用户提供 N 项装修相关费用 A 1 , A 2 , . . . , A N ,系统便会根据这些费用生
成最终的报价。
然而,当老王提交数据后,他发现这套系统的运作方式并不透明:系统只
会给出一个最终报价,而不会公开任何运算过程或中间步骤。
公司对此解释称,这套系统会依据某种内部算法,在每对相邻数字之间插
+ (加法)、 (减法)或 (异或)运算符,并按照特定优先级规则计算结
果:异或运算优先级最高,其次是加减。但由于保密性,具体的运算符组合以
及中间过程都不会对外公开。
为了验证系统报价是否合理,老王决定模拟其运作方式,尝试每种可能的
运算符组合,计算出所有可能出现的结果的总和。如果最终报价明显超出这个
范围,他就有理由怀疑系统存在异常或误差。只是老王年事已高,手动计算颇
为吃力,便向你求助。
现在,请你帮老王算出所有可能的结果的总和。由于该总和可能很大,你
只需提供其对 10 9 + 7 取余后的结果即可。
【输入格式】
第一行输入一个整数 N ,表示装修相关费用的项数。
第二行输入 N 个非负整数 A 1 , A 2 , . . . , A N ,表示各项费用。
【输出格式】
输出一个整数,表示所有可能的总和对 10 9 + 7 取余后的结果。
试题 H: 装修报价
14 第十六届蓝桥杯大赛软件赛省赛 C/C++ 大学 B
【样例输入】
3
0 2 5
【样例输出】
11
【样例说明】
对于输入样例中的三个数 A = [0 , 2 , 5] ,所有可能的运算符组合共有 9 种。
计算结果如下:
0 2 5 = 7 ,
0 2 + 5 = 7 ,
0 2 5 = 3 ,
0 + 2 5 = 7 ,
0 + 2 + 5 = 7 ,
0 + 2 5 = 3 ,
0 2 5 = 7 ,
0 2 + 5 = 3 ,
0 2 5 = 7 .
所有结果的总和为:
7 + 7 + ( 3) + 7 + 7 + ( 3) + ( 7) + 3 + ( 7) = 11
11 10 9 + 7 取余后的值依然为 11 ,因此,输出结果为 11
【评测用例规模与约定】
对于 30 % 的评测用例, 1 N 13 0 A i 10 3
对于 60 % 的评测用例, 1 N 10 3 0 A i 10 5
对于 100 % 的评测用例, 1 N 10 5 0 A i 10 9
试题 H: 装修报价
15

你可能感兴趣的:(算法)