2021年第十二届蓝桥杯省赛B组C++题解

2021年第十二届蓝桥杯省赛B组C++题解

关键词:蓝桥杯、省赛、题解、C++、算法


一、个人见解

第十二届蓝桥杯省赛B组共有10道题目,包含5道填空题(T1-T5)和5道编程题(T6-T10),总分150分。比赛时长4小时,填空题需直接提交答案,编程题需通过代码实现。题目整体难度中等偏上,重点考察暴力枚举、数论、动态规划、图论等算法知识。以下为完整题目解析及优化后的代码实现。


二、题目解析与代码实现

A. 空间(填空题)

题目描述
小蓝用256MB内存开数组,数组元素为32位二进制整数。求最多能存储多少个这样的整数?

解题思路

  • 单位转换:1MB=1024KB,1KB=1024B,1B=8bit
  • 计算公式:256MB = 256 * 1024 * 1024 B,每个元素占4B(32位)
  • 答案:256 * 1024 * 1024 / 4 = 67108864

代码实现

#include <iostream>
using namespace std;
int main() {cout << 256 * 1024 * 1024 / 4 << endl; // 输出67108864return 0;
}

B. 卡片(填空题)

题目描述
小蓝有0-9的卡片各2021张,从1开始连续拼数,直到某数字卡片不足。求最大能拼到的数。

解题思路

  • 模拟消耗过程,1的卡片最先耗尽
  • 遍历每个数的每一位,统计卡片使用情况
  • 当某卡片数量为负时,返回前一个数

代码实现

#include <iostream>
using namespace std;
int main() {int cards[10] = {2021}; // 初始化卡片数量for (int i = 1; ; i++) {int num = i;while (num) {int digit = num % 10;if (--cards[digit] < 0) { // 卡片不足cout << i - 1 << endl; // 输出3181return 0;}num /= 10;}}return 0;
}

C. 直线(填空题)

题目描述
给定20×21的网格点,求这些点能确定的不同直线数量。

解题思路

  • 枚举所有两点组合,计算斜率k和截距b
  • 使用set<pair<double, double>>去重
  • 注意处理垂直和水平线(共20+21条)

优化代码

#include <iostream>
#include <set>
using namespace std;int main() {set<pair<double, double>> lines;// 处理非垂直/水平线for (int x1 = 0; x1 < 20; x1++) {for (int y1 = 0; y1 < 21; y1++) {for (int x2 = 0; x2 < 20; x2++) {if (x1 == x2) continue; // 跳过垂直线double k = 1.0 * (y2 - y1) / (x2 - x1);double b = (x2 * y1 - x1 * y2) * 1.0 / (x2 - x1);lines.insert({k, b});}}}cout << lines.size() + 20 + 21 << endl; // 40257return 0;
}

D. 货物摆放(填空题)

题目描述
给定n=2021041820210418,求满足n=L×W×H的排列方案数。

解题思路

  • 找出n的所有因数
  • 三重循环枚举因数组合,统计乘积等于n的方案数
  • 优化:先存储因数,减少重复计算

代码实现

#include <iostream>
#include <vector>
using namespace std;
typedef long long LL;int main() {LL n = 2021041820210418;vector<LL> factors;// 收集所有因数for (LL i = 1; i * i <= n; i++) {if (n % i == 0) {factors.push_back(i);if (i != n / i) factors.push_back(n / i);}}// 枚举因数组合int ans = 0;for (LL a : factors)for (LL b : factors)for (LL c : factors)if (a * b * c == n) ans++;cout << ans << endl; // 2430return 0;
}

E. 路径(填空题)

题目描述
2021个节点的图中,节点a与b(|a-b|≤21)有一条边,边权为LCM(a,b)。求节点1到2021的最短路径。

解题思路

  • Dijkstra算法求单源最短路径
  • 预处理邻接表,计算边权(最小公倍数)

优化代码

#include <iostream>
#include <cstring>
using namespace std;
const int N = 2025;
int g[N][N], dist[N];
bool vis[N];int gcd(int a, int b) { return b ? gcd(b, a % b) : a; }
int lcm(int a, int b) { return a * b / gcd(a, b); }void dijkstra() {memset(dist, 0x3f, sizeof dist);dist[1] = 0;for (int i = 0; i < 2021; i++) {int t = -1;for (int j = 1; j <= 2021; j++)if (!vis[j] && (t == -1 || dist[j] < dist[t])) t = j;vis[t] = true;for (int j = max(1, t - 21); j <= min(2021, t + 21); j++)dist[j] = min(dist[j], dist[t] + lcm(t, j));}
}int main() {dijkstra();cout << dist[2021] << endl; // 10266837return 0;
}

三、总结

本届省赛B组题目难度适中,填空题侧重数学思维和暴力枚举,编程题涉及动态规划和数据结构优化。解题关键在于:

  1. 单位转换与公式推导(如A题)
  2. 模拟与边界处理(如B题)
  3. 集合去重与精度控制(如C题)
  4. 因数分解与组合优化(如D题)
  5. 图论算法应用(如E题)

官方资源

  • 题目链接:蓝桥杯题库
  • 报名入口:蓝桥杯官网

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/78458.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

日语学习-日语知识点小记-进阶-JLPT-N1阶段(1):语法单词

日语学习-日语知识点小记-进阶-JLPT-N1阶段&#xff08;1&#xff09;&#xff1a;语法单词 1、前言&#xff08;1&#xff09;情况说明&#xff08;2&#xff09;工程师的信仰&#xff08;3&#xff09;高级语法N1语法和难点一、N1语法学习内容&#xff08;高级语法&#xff…

Python|Pyppeteer实现自动登录小红书(32)

前言 本文是该专栏的第32篇,结合优质项目案例持续分享Pyppeteer的干货知识,记得关注。 本文中,笔者以小红书为例,基于Pyppeteer实现自动登录“小红书”。 需要注意的是,对Pyppeteer不太熟悉的同学,可往前翻阅本专栏前面介绍的Pyppeteer知识点,本专栏将带你了解并熟练使…

【翻译、转载】【转载】LLM 的函数调用与 MCP

来源&#xff1a; https://www.dailydoseofds.com/p/function-calling-mcp-for-llms/ 【代码以图像显示的是原文内容&#xff0c;以代码形式显示的是大模型给出的参考】 LLM 的函数调用与 MCP 在 MCP 变得像现在这样主流&#xff08;或流行&#xff09;之前&#xff0c;大多…

【QT】QT中http协议和json数据的解析-http获取天气预报

QT中http协议和json数据的解析 1.http协议的原理2.QT中http协议的通信流程2.1 方法步骤 3.使用http协议&#xff08;通过http下载图片和获取天气预报信息&#xff09;3.1 http下载网络上的图片(下载小文件)3.1.1 示例代码3.1.2 现象 3.2 获取网络上天气预报3.2.1 免费的天气预报…

hot100:链表倒数k个节点- 力扣(LeetCode)

题目&#xff1a; 实现一种算法&#xff0c;找出单向链表中倒数第 k 个节点。返回该链表中倒数第k个节点。 示例一&#xff1a; 输入&#xff1a;{1,2,3,4,5},2 返回值&#xff1a;{4,5} 说明&#xff1a;返回倒数第2个节点4&#xff0c;系统会打印后面所有的节点来比较。 …

Spring AI 实战:第十一章、Spring AI Agent之知行合一

引言:智能体的知行辩证法 “知为行之始,行为知之成”,王阳明的哲学智慧在AI时代焕发光彩。智能体(LLM Agent)的进化之路,正是"认知-决策-执行"这一闭环的完美诠释: 知明理:融合大语言模型的推理能力与知识图谱的结构化认知行致用:基于ReAct模式的动态工具调…

365打卡第R6周: LSTM实现糖尿病探索与预测

&#x1f368; 本文为&#x1f517;365天深度学习训练营中的学习记录博客 &#x1f356; 原作者&#xff1a;K同学啊 &#x1f3e1; 我的环境&#xff1a; 语言环境&#xff1a;Python3.10 编译器&#xff1a;Jupyter Lab 深度学习环境&#xff1a;torch2.5.1 torchvision0…

W-TinyLFU缓存驱逐算法解析

文章目录 1. 背景与概述1.1 什么是缓存驱逐算法1.2 W-TinyLFU 的定义与价值 2. 核心思想与设计理念2.1 时间局部性与频率局部性的结合2.2 高效的频率统计2.3 窗口机制的引入 3. 架构设计与组件3.1 整体架构3.2 窗口缓存&#xff08;Window Cache&#xff09;3.3 主缓存&#xf…

[特殊字符] 人工智能大模型之开源大语言模型汇总(国内外开源项目模型汇总) [特殊字符]

Large Language Model (LLM) 即大规模语言模型&#xff0c;是一种基于深度学习的自然语言处理模型&#xff0c;它能够学习到自然语言的语法和语义&#xff0c;从而可以生成人类可读的文本。 所谓 "语言模型"&#xff0c;就是只用来处理语言文字&#xff08;或者符号…

文章记单词 | 第60篇(六级)

一&#xff0c;单词释义 liar&#xff1a;英 [ˈlaɪə(r)]&#xff1b;美 [ˈlaɪər]&#xff1b;n. 说谎者verbal&#xff1a;英 [ˈvɜːbl]&#xff1b;美 [ˈvɜːrbl]&#xff1b;adj. 言语的&#xff1b;文字的&#xff1b;口头的&#xff1b;动词的comprehension&…

AI日报 · 2025年04月30日|OpenAI 回滚 GPT-4o 更新以解决“谄媚”问题

过去24小时&#xff0c;全球人工智能领域持续快速发展。从模型行为调整到平台工具更新&#xff0c;再到行业安全规范的探讨&#xff0c;以下是为您精选的重点动态&#xff1a; 1、OpenAI 回滚 GPT-4o 更新以解决“谄媚”问题 针对用户反馈最新版 GPT-4o 模型表现出过度“谄媚…

Linux54 源码包的安装、修改环境变量解决 axel命令找不到;getfacl;测试

始终报错 . 补充链接 tinfo 库时报错软件包 ncurses-devel-5.9-14.20130511.el7_4.x86_64 已安装并且是最新版本 没有可用软件包 tinfo-devel。 无须任何处理 make LDLIBS“-lncurses"报错编译时报错make LDLIBS”-lncurses" &#xff1f; /opt/rh/devtoolset-11/roo…

FPGA----基于ZYNQ 7020实现EPICS通信系统

1、本实验过程来自博b站大神《神电测控》&#xff0c;原文地址&#xff1a; EPICS实战(上位机篇)&#xff1a;基于LV ZYNQ实现的EPICS通信系统(大物理) - 哔哩哔哩https://www.bilibili.com/opus/933476043369480224EPICS实战(下位机篇)&#xff1a;基于LV ZYNQ实现的EPICS通信…

实验四 增强型可靠文件传输系统

一、实验目的和任务 掌握基于队列的多文件传输机制理解断点续传的实现原理学习文件传输完整性保障方法 二、实验内容 基础功能验证 单文件传输功能测试服务器状态监控测试传输日志记录验证 新增功能实现 多文件队列传输功能断点续传支持 三、实验步骤 4.1 客户端功能扩…

网络Tips20-003

1.E1载波的控制开销占2/32*100%6.25%&#xff0c;E1载波的基本帧传送时间是125uS。 2.计算机在一个指令周期的过程中&#xff0c;为从内存读取指令操作码&#xff0c;首先要将.程序计数器(PC)的内容送到地址总线上 3.3DES算法:密码学中&#xff0c;3DES是三重数据加密算法通称…

【MySQL】索引(重要)

目录 一、索引本质&#xff1a; 索引的核心作用 索引的优缺点 二、预备知识&#xff1a; 硬件理解&#xff1a; 软件理解&#xff1a; MySQL与磁盘交互基本单位&#xff1a; 三、索引的理解&#xff1a; 理解page&#xff1a; 单个page&#xff1a; 多个page&#x…

【深入浅出MySQL】之数据类型介绍

【深入浅出MySQL】之数据类型介绍 MySQL中常见的数据类型一览为什么需要如此多的数据类型数值类型BIT&#xff08;M&#xff09;类型INT类型TINYINT类型BIGINT类型浮点数类型float类型DECIMAL(M,D)类型区别总结 字符串类型CHAR类型VARCHAR(M)类型 日期和时间类型enum和set类型 …

数字化时代下,软件测试中的渗透测试是如何保障安全的?

在如今数字化与信息化的时代&#xff0c;软件测试中存在渗透测试&#xff0c;其位置十分重要&#xff0c;它借助模拟恶意攻击的方式&#xff0c;去发现软件系统所存在的漏洞以及安全问题&#xff0c;这是保障软件安全的关键环节&#xff0c;接下来我会对它的各个方面进行详细介…

Pytorch - Developer Notes 1/2

文章目录 自动混合精度示例典型的混合精度训练处理未缩放梯度梯度裁剪 处理缩放梯度梯度累积梯度惩罚 处理多个模型、损失函数和优化器多 GPU 工作环境下的注意事项单进程中的DataParallel分布式数据并行&#xff1a;每个进程对应一个GPU每个进程使用多块GPU的DistributedDataP…

RuntimeError: CUDA error: __global__ function call is not configured

表明在 CUDA 设备上调用的核函数 没有正确配置线程块和网格维度。 一般体现在&#xff1a; 直接调用 kernel 函数&#xff0c;而不是通过 launch 函数 指定 kernel 函数调用 解决方法&#xff08;示例&#xff09;&#xff1a; // kernel function __global__ void Idtest_k…