当前位置: 首页 > news >正文

2024 年 9 月青少年软编等考 C 语言三级真题解析

目录

  • T1. 爆气球
    • 思路分析
  • T2. 乘法小宇宙
    • 思路分析
  • T3. 有多少坑
    • 思路分析
  • T4. 势均力敌
    • 思路分析
  • T5. 买地攻略
    • 思路分析

T1. 爆气球

爆气球对孩子们来说是很好玩的游戏。假设有 n n n 只气球被布置在一条直线上,游戏的目标很简单,就是爆掉尽可能多的气球。但是这里我们加一条特殊的规则 —— 你只能跳一次。我们假设聪明的娃穿了件浑身带刺的衣服,跳到某个位置,躺平,这样气球只要碰到娃身体的任何部分都会立刻爆炸。那么你的任务就是告诉娃应该跳到哪里,才能一次爆掉最多的气球。

时间限制:1 s
内存限制:64 MB

  • 输入
    输入第一行两个正整数: n n n ≤ 1 0 5 ≤ 10^5 105)为一条线上布置的气球的数量; h h h ≤ 1 0 3 ≤ 10^3 103)为孩子伸直双臂能达到的高度。
    第二行给出 n n n 个整数,每个对应一只气球在直线轴上的坐标。题目保证坐标按递增顺序给出,所有坐标值在 [ − 1 0 6 , 1 0 6 ] [-10^6, 10^6] [106,106] 区间内。
  • 输出
    在一行中输出孩子跳跃的位置坐标,使得孩子跳到这个位置然后躺平能够爆掉身下最多的气球;随后输出能爆掉的气球的最大数量。如果这个坐标不唯一,输出最小的那个值。一行中的数间应有 1 1 1 个空格。
  • 样例输入
    11 120
    -120 -40 0 80 122 140 160 220 240 260 300
    
  • 样例输出
    120 5
    
  • 提示
    跳到从 120 120 120 140 140 140,或 240 240 240 260 260 260 之间的任何位置,都可以爆掉 5 5 5 只气球,所以 120 120 120 作为最小的坐标被输出。

思路分析

此题考查枚举算法,属于基础题。

可以用尺取法来高效完成枚举操作,具体来说,设置一个左指针 L L L,初始时为 1 1 1,表示从第一个气球所在的位置开始。然后依次枚举每一个气球 a i a_i ai,其中 i i i 作为右指针。为了能够覆盖到右指针 i i i,我们需要根据尺子的长度(娃伸直双臂能够达到的高度 h h h)将左指针 L L L 移动到合适的位置。移动过程中同时更新尺子覆盖到的气球数量,左指针 L L L 移动结束后,再更新一次气球数量。然后根据此时覆盖到的气球数量更新答案,由于需要给出最小的坐标,因此应该用 a i − h a_i - h aih 作为当前的坐标,而不是 a L a_L aL

/*
 * Name: T1.cpp
 * Problem: 爆气球
 * Author: Teacher Gao.
 * Date&Time: 2025/02/15 09:04
 */

#include <iostream>

using namespace std;

int main()
{
   
    ios::sync_with_stdio(false);
    cin.tie(0);

    int n, h, a[100005] = {
   0};
    cin >> n >> h;
    for (int i = 1; i <= n; i++) {
   
        cin >> a[i];
    }

    int L = 1, tot = 0, ans = 0, ansx;
    for (int i = 1; i <= n; i++) {
   
        while (a[L] + h < a[i]) {
   
            L++, tot--;
        }
        tot++;
        if (tot > ans) {
   
            ans = tot, ansx = a[i] - h;
        }
    }

    cout << ansx << " " << ans << endl;

    return 0;
}

T2. 乘法小宇宙

一个 n n n 位数的正整数 A = a n a n − 1 . . a 1 A=a_na_{n-1}..a_1 A=anan1..a1 和另一个 2 2 2 位数的正整数 B = b 2 b 1 B=b_2b_1 B=b2b1 相乘,其乘法展开式如下图所示:
在这里插入图片描述
其中 C = c n + 1 c n . . c 1 C=c_{n+1}c_n..c_1 C

相关文章:

  • 多个用户如何共用一根网线传输数据
  • docker-compose rocketmq5.1.3
  • qt-C++笔记之QGraphicsScene和 QGraphicsView中setScene、通过scene得到view、通过view得scene
  • 自助优化排名工具:智能更新网站优化
  • 考研高数复习规范
  • Linux-C/C++《七、字符串处理》(字符串输入/输出、C 库中提供的字符串处理函数、正则表达式等)
  • 《法律合唱团早新闻生成器项目上传及使用全流程文档》
  • Vue 3 30天精进之旅:Day 25 - PWA支持
  • 2025年二级建造师报名流程图解
  • 微软 Microsoft Windows Office Professional LTSC 2024 专业增强版
  • 设备智能化无线通信,ESP32-C2物联网方案,小尺寸芯片实现大功能
  • SpringBoot实战(三十二)集成 ofdrw,实现 PDF 和 OFD 的转换、SM2 签署OFD
  • ai idea配置ai写代码
  • SQL进阶能力:经典面试题
  • 【信息系统项目管理师-选择真题】2022下半年综合知识答案和详解
  • MYSQL-数据恢复与备份
  • 代码随想录算法训练营第三十八天| 动态规划02
  • HBase高级技巧:解锁更强大的数据处理能力
  • 浅说树形dp
  • Dubbo 集群策略:负载均衡与容错机制
  • 中国中古史集刊高质量发展论坛暨《唐史论丛》创刊四十周年纪念会召开
  • 民生访谈|摆摊设点、公园搭帐篷、行道树飘絮,管理难题怎么解?
  • 央行、证监会:科技创新债券含公司债券、企业债券、非金融企业债务融资工具等
  • 《蓦然回首》:现代动画的践行与寓言
  • 有乘客被高铁车门夹住?铁路回应:系突感不适下车,未受伤,列车正点发车
  • “穿越看洪武”,明太祖及其皇后像台北故宫博物院南园展出