理论卷2022年3月青少年软件编程(C\C++) · 四级

YLT C++ 4级 2022.03

满分 100 · 及格 60 · 时长 60 分钟 · 共 4 题 (编程题4)
试卷阅览 · 免费预览前 10 题 · 交卷后可查看答案与解析
1
编程题题号 #22393
分值 25

N5481 [CIE 202203 四级 T1] 拦截导弹

题目描述

某国为了防御敌国的导弹袭击, 发展出一种导弹拦截系统。 但是这种导弹拦截系统有一个缺陷: 虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。 某天, 雷达捕捉到敌国的导弹来袭。 由于该系统还在试用阶段, 所以只有一套系统, 因此有可能不能拦截所有的导弹。
输入导弹依次飞来的高度(雷达给出的高度数据是不大于 3000030000 的正整数) , 计算这套系统最多能拦截多少导弹。

输入格式

第一行是一个整数 NN(不超过 1515) , 表示导弹数。 第二行包含 NN 个整数, 为导弹依次飞来的高度(雷达给出的高度数据是不大于 3000030000 的正整数) 。

输出格式

一个整数, 表示最多能拦截的导弹数。

样例

样例 1
输入:

8
389 207 155 300 299 170 158 65

输出:

6

提示

无

2
编程题题号 #22394
分值 25

N5482 [CIE 202203 四级 T2] 神奇的数列

题目描述

一个正整数数列, 可以将它切割成若干个数据段, 每个数据段由值相同的相邻元素构成。 该数列的神奇之处在于, 每次切除一个数据段后,该数据段前后的元素自动连接在一起成为邻居。 例如从数列 “2 8 9 77 6 9 42\ 8\ 9\ 77\ 6\ 9\ 4” 中切除数据段 “7 77\ 7 ” 后, 余下的元素会构成数列 “2 8 9 6 942\ 8\ 9\ 6\ 94”
请问若要将该数列切割成若干个数据段, 则至少会切出来几个数据段?
样例: 按下列顺序切割数列 “2 8 9 7 7 6 9 42\ 8\ 9\ 7\ 7\ 6\ 9\ 4” , 只要切割成 66 段
切割出 “7 77\ 7” , 余下 “2 8 9 6 9 42\ 8\ 9\ 6\ 9\ 4”
切割出 “66” , 余下 “2 8 9 9 42\ 8\ 9\ 9\ 4”
切割出 “9 99\ 9” , 余下 “2 8 42\ 8\ 4”
切割出 “22” , 余下 “8 48\ 4”
切割出 “88” , 余下 “44”

输入格式

第一行是一个整数, 示共有多少组测试数据。 每组测试数据的输入包括两行: 第一行是整数 NN, N≤200N\leq 200,表示数列的长度, 第二行是 NN 个正整数。

输出格式

每个测试案例的输出占一行, 是一个整数。 格式是: Case n: x
nn 是测试数据组编号, xx 是答案

样例

样例 1
输入:

2
8
2 8 9 7 7 6 9 4
16
2 8 9 7 7 6 9 4 4 2 8 4 2 7 6 9

输出:

Case 1: 6
Case 2: 11

提示

无

3
编程题题号 #22395
分值 25

N5483 [CIE 202203 四级 T3] 硬币

题目描述

宇航员 BobBob 有一天来到火星上, 他有收集硬币的习惯。 于是他将火星上所有面值的硬币都收集起来了, 一共有 nn 种, 每种只有一个: 面值分别为 a1,a2…ana_1,a_2 \ldots a_n。 BobBob 在机场看到了一个特别喜欢的礼物, 想买来送给朋友 AliceAlice, 这个礼物的价格是 XX 元。 BobBob 很想知道为了买这个礼物他的哪些硬币是必须被使用的, 即 BobBob 必须放弃收集好的哪些硬币种类。 飞机场不提供找零, 只接受恰好 XX 元。

输入格式

第一行包含两个正整数 nn 和 xx。(1≤n≤2001 \leq n \leq 200, 1≤x≤100001 \leq x \leq 10000)
第二行从小到大为 nn 个正整数 a1,a2,a3…ana_1, a_2, a_3 … a_n (1≤ai≤100001 \leq a_i \leq 10000)

输出格式

第一行是一个整数, 即有多少种硬币是必须被使用的。
第二行是这些必须使用的硬币的面值(从小到大排列) 。

样例

样例 1
输入:

5 18
1 2 3 5 10

输出:

2
5 10

提示

输入数据将保证给定面值的硬币中至少有一种组合能恰好能够支付 XX 元。 如果不存在必须被使用的硬币, 则第一行输出 00, 第二行输出空行。

4
编程题题号 #22396
分值 25

N5484 [CIE 202203 四级 T4] 公共子序列

题目描述

我们称序列 Z=Z = 是序列 X=X = 的子序列当且仅当存在严格上升的序列 $$, 使得对 j=1,2,...,kj = 1, 2, ... ,k, 有 xij=zjx_{ij} = z_j。 比如 Z=Z = 是 X=X = 的子序列。 现在给出两个序列 XX 和 YY, 你的任务是找到 XX 和 YY 的最大公共子序列, 也就是说要找到一个最长的序列 ZZ, 使得 ZZ 既是 XX 的子序列也是 YY 的子序列。

输入格式

输入包括多组测试数据。 每组数据包括一行, 给出两个长度不超过 200200 的字符串, 表示两个序列。 两个字符串之间由 11 个空格隔开。

输出格式

对每组输入数据, 输出一行, 给出两个序列的最大公共子序列的长度。

样例

样例 1
输入:

abcfbc abfcab
programming contest
abcd mnp

输出:

4
2
0

提示

无

海小星AI平台海小星AI平台

点亮AI梦想,编程未来之星。专业的青少年AI编程教育平台。

课程方向

  • AIGC人工智能
  • Scratch图形化
  • Python编程
  • C++/NOIP竞赛

联系我们

  • 北京市西城区万博苑7号楼3层F28室
  • +86-010-83553010
  • contact@seanova.cn

© 2026 海小星AI平台|京ICP备2022032747号

隐私政策服务条款