蓝桥杯每日真题 - 第16天

server/2024/11/23 1:45:54/

题目:(卡牌)

题目描述(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.ppmy.cn/server/144146.html

相关文章

WebSocket详解、WebSocket入门案例

目录 1.1 WebSocket介绍 http协议&#xff1a; webSocket协议&#xff1a; 1.2WebSocket协议&#xff1a; 1.3客户端&#xff08;浏览器&#xff09;实现 1.3.2 WebSocket对象的相关事宜&#xff1a; 1.3.3 WebSOcket方法 1.4 服务端实现 服务端如何接收客户端发送的请…

【NodeJS】Node.js是什么?能做什么?

👉博主介绍: 博主从事应用安全和大数据领域,有8年研发经验,5年面试官经验,Java技术专家,WEB架构师,阿里云专家博主,华为云云享专家,51CTO 专家博主 ⛪️ 个人社区:个人社区 💞 个人主页:个人主页 🙉 专栏地址: ✅ Java 中级 🙉八股文专题:剑指大厂,手撕 J…

springboot基于SpringBoot的校园招聘网站的设计与实现现

摘 要 校园招聘网站是一个专门为高校毕业生和用人单位提供就业与招聘信息的网络平台。该网站通过现代互联网技术&#xff0c;实现了职位信息的发布、简历投递、在线沟通等功能&#xff0c;极大地方便了企业和学生之间的互动。在设计上&#xff0c;网站注重用户体验&#xff0c…

unity li2cpp逆向原理是什么?

主要涉及将Unity游戏引擎中的C#代码转换为C代码&#xff0c;并进一步编译为各平台的原生&#xff08;Native&#xff09;代码的过程&#xff0c;以及逆向工程工具如何利用这一过程中的特定文件来还原和分析原始代码。以下是对Unity IL2CPP逆向原理的详细解释&#xff1a; 对惹…

Python小游戏28——水果忍者

首先&#xff0c;你需要安装Pygame库。如果你还没有安装&#xff0c;可以使用以下命令进行安装&#xff1a; 【bash】 pip install pygame 《水果忍者》游戏代码&#xff1a; 【python】 import pygame import random import sys # 初始化Pygame pygame.init() # 设置屏幕尺寸 …

DAY66||Floyd 算法精讲 |A * 算法精讲 (A star算法)|最短路算法总结篇|图论总结

Floyd 算法精讲 97. 小明逛公园 题目描述 小明喜欢去公园散步&#xff0c;公园内布置了许多的景点&#xff0c;相互之间通过小路连接&#xff0c;小明希望在观看景点的同时&#xff0c;能够节省体力&#xff0c;走最短的路径。 给定一个公园景点图&#xff0c;图中有 N 个景点…

esp32c3开发板通过micropython的mqtt库连MQTT物联网消息服务器

MQTT介绍 MQTT&#xff08;Message Queuing Telemetry Transport&#xff09;是一种轻量级的消息协议&#xff0c;旨在设备之间进行通信&#xff0c;尤其是在网络条件较差的情况下。MQTT v3.1.1 和 MQTT v5 是该协议的两个主要版本。 MQTT v3.1.1&#xff1a; 优点&#xff…

计算机网络-理论部分(一):概览

重点 计算机网络的重点是协议&#xff0c;各种协议&#xff0c;每种协议都有自己对应的应用场景以及对应功能&#xff0c;学好协议&#xff0c;就学好了计算机努网络。 协议分层 协议分层围绕数据的传递展开。数据的传递需要包括&#xff1a;打包数据&#xff0c;控制传递&a…