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.pswp.cn/web/78458.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/78458.shtml
英文地址,請注明出處:http://en.pswp.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…