选择题 共5道

01 02 03 04 05


多选题 共5道

06 07 08 09 10


编程题 共4道

11 12 13 14

E1028 算法应用 星火征途 C++ 初中组 复赛模拟题2-练习

选择题 共5道
01 红军某小分队初始有 100 斤青稞面,每天全队固定消耗 8 斤,但侦察兵每天沿途能挖到 3 斤野菜补充。如果用 while 循环计算多少天后粮食会彻底耗尽(小于等于 0),以下条件判断最准确的是? 2分
登录后查看选项
02 行军途中,红军队伍排成一字长蛇阵。由于道路崎岖,经常会有人员需要从队伍的中间撤出,或者有医疗兵需要紧急插入到队伍的中间某个特定位置。如果我们需要在计算机中模拟这个排队系统,且要求在已知插入/删除位置的前提下,该操作的时间复杂度必须是 O(1),应该选择哪种数据结构? 2分
登录后查看选项
03 关于 C++ 中的 while 和 do-while 循环,就好比红军执行巡逻任务的不同策略。以下说法错误的是? 2分
登录后查看选项
04

小通讯员编写了一段基础的密电解密代码,它的作用是?

int n, rev = 0;
cin >> n;
while (n > 0) {
    rev = rev * 10 + n % 10;
    n /= 10;
}
cout << rev;
2分
登录后查看选项
05 红军截获了一份敌军用八进制编写的物资清单,其中子弹的数量显示为175。为了方便军需处统计,小通讯员需要将其转换为我们熟悉的十进制数。这个数量对应的十进制值是? 2分
登录后查看选项
多选题 共5道
06 当任务规模 n(如敌军数量或路径长度)变得非常大时,指挥部需要对比多种突围方案。假设方案一的时间复杂度为 O(n^2),方案二的时间复杂度为 O(n * log(n))。以下描述正确的有哪些? 4分
登录后查看选项
07

红军司务长正在给排队的战士们分发干粮。我们用队列来模拟这个过程。阅读以下代码,请选出说法正确的选项。

#include <queue>
#include <iostream>
using namespace std;
int main() {
  queue<int> q;
  q.push(1);
  q.push(2);
  q.push(3);
  q.pop();
  q.push(4);
  q.push(5);
  return 0;
}
4分
登录后查看选项
08 先遣小队进入了一片被大雪覆盖的迷宫树林(可视为二维网格图),他们需要找到一条离开树林的最短安全路径。关于搜索算法的应用,以下说法正确的有。 4分
登录后查看选项
09 红军营队附近有一列信号发射器,用 f(n) 表示第 n 个发射器的强度,等于前两个信号塔强度之和,即 f(n)=f(n−1)+f(n−2),且 f(1)=1,f(2)=1。在 C++ 中写递归函数求f(n)时,说法错误的是。 4分
登录后查看选项
10

红军通讯班需要建立一个无线电发报阵地。侦察员测绘了所有备选山头的高度,并将其记录在一个从小到大排列的有序数组 A 中。

为了保证电报能够顺利发回总指挥部,发报机要求阵地的海拔高度至少要达到 target。小通讯员编写了以下“二分查找”的代码,试图在数组 A 中快速锁定合适的阵地。

阅读以下 C++ 代码,关于该程序的运行逻辑,说法正确的有。

int left = 1, right = n, ans = -1;
while (left <= right) {
  int mid = left + (right - left) / 2;
  if (A[mid] >= target) {
    ans = mid;    // 记下当前阵地编号
    right = mid - 1; // 继续向左侧寻找,看有没有更靠前的合适阵地
  } else {
    left = mid + 1;
  }
}
4分
登录后查看选项
编程题 共4道
11

红军的密码破译

题目描述

红军通讯员截获了一段敌军的小写英文字母密电。根据情报,敌军的加密规则非常简单:将明文中的每一个字母,都在字母表上向后平移了 K 个位置(例如 K=1 时,'a' 变成 'b','z' 变成 'a')。

现在情况紧急,请你编写程序,已知平移的位数 K 和截获的密文,帮助红军将其破译还原为明文。

输入

第一行包含一个正整数 K,表示字母平移的位数。

第二行包含一个仅由大小写英文字母组成的字符串,表示截获的密文。

输出

输出一行,表示破译后的明文。

数据范围

数据保证,输入的 K 介于 1 至 25 之间,密文均仅由小写字母构成,不包含其他字符。

输入样例1

7

php

输出样例1

iai

15分
登录后作答
12

红军的部队整编

题目描述

红军模拟演练整编部队,先遣队共有 n 支战斗小组,根据当前装备情况分为两种初始编制:

  • 轻装组,简称“0”型小组。
  • 掩护组,简称“1”型小组。

根据地形侦察报告:

  • 投入一支 “0”型 小组参战,需消耗 a 份后勤补给。
  • 投入一支 “1”型 小组参战,需消耗 b 份后勤补给。

由于战斗需要,可以通过紧急换装(战略转型)来调整编制:将一支“0”型组改造为“1”型组,或将“1”型组改造为“0”型组,均需额外消耗 c 份补给。

请你计算出:在确保所有 n 支小组都投入战斗的前提下,如何通过“直接参战”或“转型后参战”的决策,使总的补给消耗降到最低?

输入

第一行包含一个整数 T,表示共有 T 次模拟演练。

每组演练包含两行数据:

第一行四个整数 n,a,b,c。

第二行一个长度为 n 的 01 字符串,表示各小组的初始编制状态。

输出

每组数据结果占一行,输出一个整数表示最小消耗。

数据范围

1≤T≤100,1≤n,a,b,c≤10000

输入样例1

3

4 1 2 1

1001

6 1 1 1

101011

3 2 1 3

111

输出样例1

6

6

3

输入样例2

4

4 3 2 1

1111

7 1 4 2

0111011

5 11 5 1

10010

6 1 1 1

101001

输出样例2

8

17

28

6

输入样例3

6

3 1 1 1

100

5 10 100 1

01010

5 10 1 1

11111

5 1 10 1

11111

12 2 1 10

101110110101

2 100 1 10

00

输出样例3

3

52

5

10

16

22

15分
登录后作答
13

红军搭浮桥

题目描述

红军工兵连搭建了一座秘密浮桥。这座浮桥的设计非常特殊:

  1. 开启机制:当一名红军战士踏上浮桥时,浮桥会立即进入“稳固通行状态”。
  2. 自动隐蔽:当一名红军战士踏上浮桥时,浮桥维持 d 秒的稳固时间。d 秒后为了安全,浮桥会自动沉入水下隐蔽。
  3. 计时重置:如果浮桥在通行状态下,又有一名战士踏了上来,浮桥的稳固计时器会立即重置,从这一刻起重新计算 d 秒后再隐蔽。

现在共有 n 名战士陆续通过了浮桥,他们踏上桥的时间点分别是 t1,t2,…,tn。请你计算,从第一名战士踏上浮桥开始,到最后浮桥自动隐蔽,浮桥总共在水面上开启了多少时间?

输入

第一行:两个正整数 n 和 d。n 表示通过浮桥的战士人数,d 表示浮桥的稳固时间。

第二行:n 个单调不降的正整数 t1,t2,…,tn,表示每位战士踏上浮桥的时间点。

输出

一行一个整数,表示浮桥位于通行状态的总时间。

数据范围

1≤n≤10^5,1≤ti≤10^9,且 t1≤t2≤t3≤⋯≤tn,1≤d≤10^9

输入样例1

7 3

1 2 7 10 15 17 22

输出样例1

18

输入样例2

7 5

1 2 7 10 15 17 22

输出样例2

26

输入样例3

7 4

1 2 3 4 5 6 6

输出样例3

9

20分
登录后作答
14

红军的战略选择

题目描述

红军进入地势险峻的山区,侦察员将某片区域绘制成一张 H×W 的网格地图:

  • 字符 '.':代表山间小路或密林,可以通行。
  • 字符 '#':代表悬崖峭壁,部队无法通过。

红军可以从一个'.'格子移动到上、下、左、右相邻的'.'格子。为了迷惑敌人,指挥部需要寻找这片区域中距离最远的两个战略位置(起点和终点),使得即使走最短路径,所需的移动次数也是最多的。

请你计算出这个最大的移动次数,以评估这片战区的战略回旋纵深。

输入

第 1 行:2 个正整数 H 和 W,表示地图的行数和列数。

接下来 H行:每行 W 个字符(. 或 #),表示战区地形。

输出

1 个正整数,表示在这片战区中,两点间最短路径的最大值。

数据范围

1≤H,W≤20

地图至少包含两个".",并且任意两个"."之间都可以通过若干次移动互相到达。

输入样例1

3 3

.#.

...

##.

输出样例1

4

输入样例2

3 5

...#.

.#.#.

.#...

输出样例2

10

20分
登录后作答