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

蓝桥杯每日真题 - 第16天

题目:(卡牌)

题目描述(13届 C&C++ B组C题)

cec9af1a4a824a0bac9b0a01b9a634df.png

5a0dd429258d4e7a8372111a63f7bb4a.png 

解题思路:

  • 题目分析

    • n 种卡牌,每种卡牌的现有数量为 a[i],所需的最大数量为 b[i],还有 m 张空白卡牌。

    • 每次组装一套卡牌,需要满足每种卡牌各一张的需求,若某种卡牌不足,可以用空白卡牌替代。

  • 核心逻辑

    • 模拟构建套组的过程:

      • 优先使用 a[i] 中已有的卡牌;

      • a[i] 不足,尝试使用空白卡牌 m 补充;

      • 若既没有足够的 a[i],也没有空白卡牌 m 时,停止构建套组。

  • 模拟过程

    • 使用一个循环依次检查每种卡牌的需求。

    • 若当前可以满足所有需求,则增加已组装的套组数 r,否则结束循环。

代码实现(C语言):

#include <math.h>
#include <stdio.h>
#include <stdlib.h>
int a[200005];
int b[200005];
int main()
{
    int n,  i, r = 0, f = 1;
    long long int m;
    scanf("%d%d", &n, &m);
    for (i = 0; i < n; i++)
    {
        scanf("%d", &a[i]);
    }
    for (i = 0; i < n; i++)
    {
        scanf("%d", &b[i]);
    }
    while (f)
    {
        for (i = 0; i < n; i++)
        {
            if (a[i])
            {
                a[i]--;
            }
            else if (b[i] > 0 && m > 0)
            {
                b[i]--;
                m--;
            }
            else
            {
                f = 0;
                break;
            }
        }
        if (f)
        {
            r++;
        }
    }
    printf("%d", r);
}

得到运行结果:

4816684bbe5141cbb47feacf34112b28.png

代码分析: 

  • 输入处理

    • 读取 n(卡牌种类数)和 m(空白卡牌数)。

    • 读取两组数组 a(现有卡牌数量)和 b(每类卡牌最大需求)。

  • 模拟过程

    • 在每次循环中,逐一检查每种卡牌:

      • a[i] > 0,使用一张已有卡牌;

      • a[i] == 0m > 0,用一张空白卡牌补充;

      • 若两者都无法满足,结束循环。

    • 每成功完成一轮,增加套组数 r

  • 终止条件

    • 任意一种卡牌的需求无法满足,或空白卡牌数不足时,停止构建。

  • 复杂度分析

    • 时间复杂度:O(k * n),其中 k 是可以组装的最大套组数,n 是卡牌种类数。

    • 空间复杂度:O(n),用于存储数组 ab

难度分析

⭐️⭐️⭐️

 

总结

本题的解法是基于模拟的方法,逐步验证每套卡牌是否能完成。在实现中,逐一扣减卡牌需求,并动态更新空白卡牌的使用情况,最终统计完成的套组数。这种方式清晰且直观,非常适合解决需要严格满足条件的资源分配问题。

 

 


http://www.kler.cn/a/401508.html

相关文章:

  • 重构代码之删除对参数的赋值
  • 详细解读CNAS实验室认证
  • 软件测试基础三十 (Python + Flask实现Mock平台搭建)
  • 【python】机器学习调参与自动化:使用Hyperopt优化你的模型
  • 计算机编程中的测试驱动开发(TDD)及其在提高代码质量中的应用
  • Ajax的相关内容
  • 普通单片机为什么无法直接驱动dcmi接口相机
  • 【智能优化】自动分包策略,Webpack性能提升新维度(6)
  • docker minio修改时区问题记录
  • 109页PPT丨全面优化:制造企业运营生产成本削减战略与实践指南
  • 音视频开发库ffmpeg应用
  • 一文详细深入总结服务器选型
  • Elasticsearch开启认证及kibana密码登陆
  • 抓包工具Fiddler安装及汉化
  • 网络基础(3)https和加密
  • 网络安全 与 加密算法
  • 基于YOLOv8深度学习的智慧农业山羊行为检测系统研究与实现(PyQt5界面+数据集+训练代码)
  • android studio -gradle Caused by: java.lang.NoClassDefFoundError -换版本方案
  • 竞赛笔记:Hybrid Search (Ensemble Encoder + BM25)
  • Java策略模式应用实战
  • 优化 MFC CGridCtrl 的表格布局与功能
  • C语言练习.switch
  • 竞赛思享会 | 2024年第十届数维杯国际数学建模挑战赛D题【代码+演示】
  • 使用OpenFeign+Eureka实现HTTP调用的简单示例
  • 安全平行切面的概念以及对安全行业影响
  • 前端记录3