2024年山东CSP-X复赛真题解析

news/2026/1/20 15:42:56/文章来源:https://www.cnblogs.com/guolianggsta/p/19507136

​欢迎大家订阅我的专栏:算法题解:C++与Python实现!
本专栏旨在帮助大家从基础到进阶 ,逐步提升编程能力,助力信息学竞赛备战!

专栏特色
1.经典算法练习:根据信息学竞赛大纲,精心挑选经典算法题目,提供清晰的代码实现与详细指导,帮助您夯实算法基础。
2.系统化学习路径:按照算法类别和难度分级,从基础到进阶,循序渐进,帮助您全面提升编程能力与算法思维。

适合人群:

  • 准备参加蓝桥杯、GESP、CSP-J、CSP-S等信息学竞赛的学生
  • 希望系统学习C++/Python编程的初学者
  • 想要提升算法与编程能力的编程爱好者

附上汇总帖:历年CSP-X复赛真题解析 | 汇总


B4104 购物

【题目来源】

洛谷:[B4104 CSP-X2024 山东] 购物 - 洛谷

【题目描述】

双十一,很多人在疯狂地购物。

商家推出了各种各样的优惠活动,吸引顾客购买更多的商品。

某商家推出如下的优惠活动:

该商家共有 \(n\) 件商品,单独购买第 \(i\) 件商品的费用为 \(a_i\)。顾客也可以花费 \(w\) 购买 一张优惠券,一张优惠券最多可兑换 \(m\) 件商品(无需额外付费)。顾客可以购买任意张优惠券;

如果最后商品不足 \(m\) 件,优惠券也可以使用。

求顾客购买完所有 \(n\) 件商品的最小费用。

【输入】

第一行有 \(3\) 个整数 \(n,m,w\)

第二行有 \(n\) 个整数,第 \(i\) 个为 \(a_i\),表示第 \(i\) 件商品的费用。

【输出】

购买所有商品的最小费用。

【输入样例】

5 2 8
2 7 1 8 4

【输出样例】

15

【算法标签】

《洛谷 B4104 购物》 #山东# #CSP-X小学组# #2024#

【代码详解】

#include <bits/stdc++.h>
using namespace std;
#define int long long  // 使用长整型
const int N = 200005;  // 定义最大数组长度int n, m, w, ans;  // n:物品数量,m:分组大小,w:每组最大价值,ans:总价值
int a[N];          // 存储物品价值signed main() {cin >> n >> m >> w;  // 输入物品数、分组大小和每组价值上限// 读取物品价值并降序排序for (int i = 1; i <= n; i++) cin >> a[i];sort(a + 1, a + 1 + n, greater<int>());int res = 0;  // 当前组累计价值for (int i = 1; i <= n; i++) {res += a[i];  // 将当前物品加入当前组// 每当凑满m个物品或处理完所有物品时if (i % m == 0 || i == n) {ans += min(res, w);  // 累加当前组价值(不超过w)res = 0;             // 重置当前组累计价值}}cout << ans << endl;  // 输出总价值return 0;
}

【运行结果】

5 2 8
2 7 1 8 4
15

B4105 消灭怪兽

【题目来源】

洛谷:[B4105 CSP-X2024 山东] 消灭怪兽 - 洛谷

【题目描述】

怪兽入侵了地球!

为了抵抗入侵,人类设计出了按顺序排列好的 \(n\) 件武器,其中第 \(i\) 件武器的攻击力为 \(a_i\),可以造成 \(a_i\) 的伤害。

武器已经排列好了,因此不能改变顺序。某件武器可以单独攻击,也可以与相邻的武器进行组合攻击。具体来说,每次你可以把相邻的若干个(可以为 \(1\) 个,即不进行组合)连续的武器组合起来进行攻击,则攻击力为这些连续的武器攻击力之和。

来自外星的怪兽拥有无敌护盾,不会受到任何伤害。

但是人类在交战过程中发现怪兽有个致命的弱点:每次当受到 \(k\)\(k\) 的倍数的伤害时,怪兽的无敌护盾就能被打破。

请你帮助人类求出有多少种组合武器的方案,使得造成的伤害能打破怪兽的无敌护盾。

【输入】

第一行两个正整数 \(n,k\) 如题所述;

第二行为 \(n\) 个正整数,其中第 \(i\) 个数 \(a_i\) 表示第 \(i\) 件武器的攻击力。

【输出】

一行一个整数表示答案。

【输入样例】

5 3
1 2 3 4 5

【输出样例】

7

【算法标签】

《洛谷 B4105 消灭怪兽》 #山东# #CSP-X小学组# #2024#

【代码详解】

#include <bits/stdc++.h>
using namespace std;
#define int long long  // 使用长整型
const int N = 1000005;  // 定义最大数组长度int n, k, ans;      // n:数组长度,k:模数,ans:结果计数
int a[N], sa[N];    // a:原始数组,sa:前缀和数组
int cnt[N];         // 记录余数出现次数的数组signed main() {cin >> n >> k;  // 输入数组长度和模数k// 计算前缀和数组for (int i = 1; i <= n; i++) {cin >> a[i];sa[i] = sa[i-1] + a[i];  // sa[i]表示前i个元素的和}// 统计同余子数组数量for (int i = 0; i <= n; i++) {// 当前前缀和模k的余数int remainder = sa[i] % k;// 之前出现过相同余数的次数即为新增的子数组数量ans += cnt[remainder];// 更新该余数的出现次数cnt[remainder]++;}cout << ans << endl;  // 输出满足条件的子数组数量return 0;
}

【运行结果】

5 3
1 2 3 4 5
7

B4106 翻硬币

【题目来源】

洛谷:[B4106 CSP-X2024 山东] 翻硬币 - 洛谷

【题目描述】

\(n\) 枚硬币从左到右依次排成一排,编号依次为 \(1\)\(n\)。硬币的正面朝上用 \(0\) 表示,背面朝上用 \(1\) 表示,一开始所有的硬币都是正面朝上。

现进行 \(m\) 次操作,每次操作是把一个区间内的所有硬币翻过来:原来正面朝上的变为反面朝上,原来反面朝上的变为正面朝上。

\(i\) 次操作的区间 \([l_i,r_i]\):表示把从第 \(l_i\) 到第 \(r_i\) 枚之间的所有硬币都翻过来。

\(m\) 次操作后所有硬币从左到右依次组成的 \(01\) 数字序列。

【输入】

第一行整数 \(n\) 和整数 \(m\),表示一共有 \(n\) 枚硬币和 \(m\) 次操作。

以下 \(m\) 行,每行两个正数数 l_i,ri,依次表示每次操作区间。

【输出】

m 次操作结束后 n 枚硬币从左到右依次组成的 01 数字序列。

【输入样例、

5 3
2 4
1 3
3 5

【输出样例】

10101

【算法标签】

《洛谷 B4106 翻硬币》 #山东# #CSP-X小学组# #2024#

【代码详解】

#include <bits/stdc++.h>
using namespace std;const int N = 200005;  // 定义最大数组长度
int n, m;              // n:二进制串长度,m:操作次数
int a[N];              // 差分数组int main() {cin >> n >> m;  // 输入二进制串长度和操作次数// 处理每个操作区间for (int i = 1; i <= m; i++) {int l, r;cin >> l >> r;  // 输入操作区间a[l] ^= 1;      // 区间起始位置取反a[r + 1] ^= 1;  // 区间结束位置+1取反(差分思想)}// 计算前缀异或和,得到最终二进制串for (int i = 1; i <= n; i++) {a[i] ^= a[i - 1];  // 当前位与前一位异或}// 输出最终二进制串for (int i = 1; i <= n; i++) {cout << a[i];}cout << endl;return 0;
}

【运行结果】

5 3
2 4
1 3
3 5
10101

B4107 刷题

【题目来源】

洛谷:[B4107 CSP-X2024 山东] 刷题 - 洛谷

【题目描述】

比赛之路多艰,做题方得提升。努力刷题的人在比赛中往往能取得很好的成绩,小红就是这样的人。

为了继续提升自己的编程实力,小红整理了一份刷题题单,并选中了题单中的 \(n\) 道编程题,将它们从 \(1\)\(n\) 编号,计划用 \(m\) 天时间按照题目编号顺序做完所有的题目(一道题目只能在同一天完成,不可以使用多天完成同一道题目)。

在小红的计划中,她完成第 \(i\) 道题目的时间为 \(a_i\)。因为题目有难有易,小红做题时可以找好朋友小明帮忙解题,通过询问小明一道题目的解法,可以省去这个题目的做题时间。当然了,小红做题是为了提升自己,而不是提升小明。因此小红决定一天最多求助小明一次。

本题 \(m\) 天中,小红做题时间最长一天的总耗时定义为 \(T\)(小明帮忙做的题目不计入小红的做题总时间)。请你帮小红求出 \(T\) 的最小值是多少?

【输入】

第一行两个正整数 \(n,m\) 分别表示小红做的题目以及小红刷完这些题目计划所用天数。

第二行 \(n\) 个正整数,分别表示每个题目解题所用时间 \(a_i\)

【输出】

输出仅一行,\(m\) 天中耗时最长一天的总耗时 \(T\) 的最小值。

【输入样例】

4 2
1 2 3 3

【输出样例】

3

【算法标签】

《洛谷 B4107 刷题》 #山东# #CSP-X小学组# #2024#

【代码详解】

#include <bits/stdc++.h>
using namespace std;const int N = 100005;  // 定义最大任务数量
int n, m;              // n:任务数量, m:最大分组数
int a[N];              // 存储每个任务的耗时// 检查函数:判断是否可以在每组耗时不超过x的情况下,将任务分成不超过m组
bool check(int x) {int cnt = 0;       // 当前分组数int tmp = 0;       // 当前组的累计耗时int maxn = 0;      // 当前组中的最大任务耗时for (int i = 1; i <= n; i++) {tmp += a[i];                // 将当前任务加入当前组maxn = max(maxn, a[i]);     // 更新当前组最大任务耗时// 如果当前组累计耗时超过xif (tmp > x) {cnt++;                  // 增加分组数tmp -= maxn;            // 移除当前组最大任务(贪心策略)// 尝试将后续任务加入当前组(不超过x)int j = i + 1;while (j <= n && tmp + a[j] <= x) {tmp += a[j++];      // 加入后续任务}maxn = 0;              // 重置当前组最大任务耗时tmp = 0;               // 重置当前组累计耗时i = j - 1;             // 更新索引(因为j已经指向下一个未处理任务)}}// 处理最后一组if (tmp > 0) cnt++;// 判断分组数是否满足要求return cnt <= m;
}int main() {cin >> n >> m;  // 输入任务数量和最大分组数// 输入每个任务的耗时for (int i = 1; i <= n; i++) {cin >> a[i];}// 二分查找最小可能的最大组耗时int l = 0, r = 1e9;  // 初始化左右边界while (l < r) {int mid = (l + r) >> 1;  // 取中间值// 检查mid是否满足条件if (check(mid)) {r = mid;    // 满足则尝试更小的值} else {l = mid + 1; // 不满足则需要更大的值}}// 输出结果(最小可能的最大组耗时)cout << l << endl;return 0;
}

【运行结果】

4 2
1 2 3 3
3

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

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

相关文章

2025年度优质钣金加工企业权威推荐,钣金加工排行解析品牌实力与甄选要点 - 品牌推荐师

在制造业智能化、精密化转型的浪潮下,钣金加工作为工业制造的基础环节,其技术水平与服务质量直接影响着下游装备的性能与外观。市场对具备高精度、高效率、一站式服务能力的钣金供应商需求日益旺盛。基于对行业公开数…

2026年真空干燥箱源头厂家技术与应用概况 - 品牌排行榜

真空干燥箱作为一种利用真空环境降低水沸点以实现低温干燥的设备,广泛应用于电子、半导体、生物医疗、新材料等领域,其性能直接影响产品质量与研发效率。源头厂家在设备的核心技术研发、生产工艺控制及定制化能力上具…

CTF 全方向入门指南:Crypto 到 Web 全覆盖,网络安全小白必看(建议收藏)

文章详细介绍了CTF竞赛的五大方向&#xff1a;Crypto密码学、Pwn二进制漏洞挖掘、Web安全、MISC杂项和逆向工程。每个方向阐述了其特点、优势、所需知识储备与工具准备&#xff0c;强调兴趣和坚持是学习关键。文章鼓励初学者不畏困难&#xff0c;通过实践逐步提升技能&#xff…

2026西宁市英语雅思培训辅导机构推荐,2026权威出国雅思课程排行榜 - 苏木2025

基于《2025年中国雅思考试白皮书》核心数据及第三方调研机构3000+西宁考生真实反馈,本次针对西宁市城东区、城中区、城西区、城北区、湟中区、大通回族土族自治县、湟源县全域考生需求,开展全面深度测评,结合雅思培…

导师推荐10个AI论文平台,自考毕业论文轻松搞定!

导师推荐10个AI论文平台&#xff0c;自考毕业论文轻松搞定&#xff01; AI 工具助力论文写作&#xff0c;轻松应对自考挑战 在自考论文写作过程中&#xff0c;许多学生常常面临选题困难、结构混乱、内容重复等问题。而随着 AI 技术的不断发展&#xff0c;越来越多的 AI 工具开始…

2026国内最新玻璃胶品牌top5评测,优质企业及厂家榜单发布,服务覆盖江苏、山东、云南、四川、广东、浙江等地,定义绿色家居建材新生态 - 品牌推荐2026

随着绿色环保理念深入人心,高性能玻璃胶成为家居装修、工程建设中保障安全与美观的关键材料。本榜单基于环保性能、产品多样性、技术创新力、服务覆盖度四大维度(绿康建材新增"全产业链整合"维度),结合行…

PHP vs Go:动态与静态的终极对决

语言类型与设计哲学PHP是一种动态类型、解释型脚本语言&#xff0c;主要用于Web开发&#xff0c;设计初衷是简化网页生成任务。语法灵活&#xff0c;适合快速开发中小型项目。Go&#xff08;Golang&#xff09;是一种静态类型、编译型语言&#xff0c;由Google设计&#xff0c;…

完整教程:tslib及QT移植

完整教程:tslib及QT移植pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", &q…

Laravel vs ThinkPHP:项目选型终极指南

框架定位与适用场景Laravel适合中大型项目或复杂业务场景&#xff0c;提供完整的生态系统&#xff08;如Eloquent ORM、队列系统、测试工具等&#xff09;&#xff0c;遵循严格的设计模式&#xff08;如依赖注入&#xff09;。ThinkPHP更适合快速开发中小型项目&#xff0c;尤其…

2026年开年杭州可靠的智能猫砂盆平台推荐排行 - 2026年企业推荐榜

转载自:https://www.nicepp10.com/rankinglis/288613.html 文章摘要 随着“它经济”的蓬勃发展,智能猫砂盆已成为宠物消费升级的核心品类,尤其在杭州这类新一线城市,养宠家庭对科技化、健康化养宠方案的需求日益旺…

PHP性能优化全攻略

PHP 性能优化方法 代码层面优化 避免使用过多循环和嵌套&#xff0c;尽量使用内置函数&#xff08;如 array_map 替代 foreach&#xff09;。减少全局变量和魔术方法&#xff08;如 __get、__set&#xff09;的使用。使用 代替 进行严格比较以减少类型转换开销。 缓存技术应…

2026年上海市电动车车棚喷淋系统生产厂家综合评测:领军企业解析 - 2026年企业推荐榜

转载自:https://www.koubeijingxuan.com/rankinglis/285641.html 文章摘要 本文针对电动车车棚火灾防控需求,深度评测2026年上海市电动车车棚喷淋系统生产厂家的综合实力。通过客观评估框架分析技术、功能、案例等维…

ACPI!ACPIGetWorkerForInteger函数中的request->CallBackRoutine=ACPI!GetPciAddressWorker

ACPI!ACPIGetWorkerForInteger函数中的request->CallBackRoutineACPI!GetPciAddressWorker第一部分&#xff1a; 1: kd> kc# 00 ACPI!ACPIGetWorkerForInteger 01 ACPI!AsyncCallBack 02 ACPI!RunContext 03 ACPI!DispatchCtxtQueue 04 ACPI!StartTimeSlicePassive 05 AC…

2026真空干燥箱定制厂家推荐:技术与服务双优之选 - 品牌排行榜

真空干燥箱作为工业生产与科研实验中的关键设备,其性能直接影响物料干燥效率与质量。在定制化需求日益增长的当下,选择技术实力强、产品可靠性高的厂家成为企业关注的重点。本文基于市场调研与用户反馈,梳理值得关注…

一文快速了解SEO(初学者必看)

一、先搞懂&#xff1a;SEO到底是什么&#xff0c;搜索引擎怎么工作 SEO的全称是搜索引擎优化&#xff0c;简单来说&#xff0c;就是通过对网站的内容、结构、技术等方面进行合理调整&#xff0c;让搜索引擎能更轻松地发现、理解我们的网站&#xff0c;同时让网站在搜索引擎的…

test 20260120 -2

在工业制造领域,粉末冶金制品以其高精度、高性能的特点,成为汽车、家电、医疗器械等行业的关键部件。据统计,全球粉末冶金市场规模已突破200亿美元,年复合增长率达6.5%,其中中国占比超30%。在众多生产厂家中,深圳…

2026靠谱的真空干燥箱厂家推荐 - 品牌排行榜

真空干燥箱作为一种利用真空环境进行干燥处理的设备,广泛应用于电子、医药、材料等领域,其性能稳定性与技术可靠性对实验与生产结果具有重要影响。在选择相关设备提供方时,技术实力、产品质量与服务体系是需要关注的…

没有自己的靶场?安排上,自己动手建一个

靶场篇 1、在线靶场 BugKu&#xff08;简单&#xff0c;推荐新手入门&#xff0c;还有在线工具&#xff09;https://ctf.bugku.com/index.html 北京联合大学BUUCTF&#xff08;新靶场&#xff0c;难度中上&#xff0c;搜集了很多大赛原题&#xff09; https://buuoj.cn/ CT…

微算法科技(NASDAQ :MLGO)开发基于QML的入侵检测识别系统(QML-IDS),强化网络安全防护

随着网络技术的飞速发展,网络环境日益复杂,各类网络攻击层出不穷,传统的入侵检测系统在面对日益复杂且多变的威胁时,逐渐暴露出检测准确率不够高、应对新型攻击乏力等问题。而量子计算技术的兴起为网络安全领域带来…

2025年网络安全威胁趋势深度分析

A 2025 Threat Trends Analysis 随着2025年接近尾声并步入假日季节&#xff0c;现在是回顾和反思网络安全行业一年来所发生事件的好时机。业界人士都明白&#xff0c;虽然每年的情况不尽相同&#xff0c;但某些趋势往往会年复一年地持续存在。因此&#xff0c;牢记过去发生的事…