news 2026/2/11 23:32:35

2024年信息学奥赛CSP-S2提高组复赛题解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
2024年信息学奥赛CSP-S2提高组复赛题解

CCF CSP-S 2024 第二轮比赛

没想到 CSP-S 最后一题的难度就这么难了,周末做了一天,写到凌晨,写到崩溃

零、背景

今天来看看 2024 年 CSP-S 的四道题的题解吧。

A: 快慢指针

B: 区间问题

C: 贪心+动态规划+前缀和

D: 树形DP

一、决斗


题意:各一个数组,对于每个位置,可以随意选择另外一个位置,如果对方的值小于当前的值,则对方可以被杀死。

问如何选择,才能使得剩余未被杀死的位置最少。

思路:二分查找 或快慢指针

显然,需要排序,然后需要从最小或者最大的开始处理。

一开始有一个集合,代表所有数字都未被杀死。

假设从最小的开始枚举,则每次只需要判断集合里最小的元素是否可以被杀死即可。

这时候,集合是顺序访问的,所以可以使用数组来储存,枚举的是快指针,尚未杀死的最小值就是慢指针。

int l = 0, r = 1; while (r < n) { if (nums[r] > nums[l]) { l++; } r++; } printf("%lld\n", r - l);

假设从最大值开始枚举,则每次需要找到小于最大值的最大元素。
这个需要使用二分查找。

multiset<ll> H; ll ans = n; for (int i = n - 1; i >= 0; i--) { ll v = nums[i]; auto it = H.lower_bound(v); if (it == H.begin()) { continue; // 没有更小值,无法删除 } it--; H.erase(it); ans--; } printf("%lld\n", ans);

二、超速检测

题意:给一段长度为 L 的路,一开始有 n 个车以指定起点以及指定起始速度在从南往北行驶。

另外这些车还有自己的加速度,负数代表减速。

车的速度为0时停止,否则直到开出这段路。

现在路上有 m 个监控,车以超过 V 的速度超过某个监控,则算拍到超速,问哪些车会被抓拍到超速。

另外,最多关闭多少个监控,抓拍到的超速的车辆不会漏。

思路:区间问题。

第一步是计算出每个车的超速路段。

超速路段计算需要解方程。

起始速度 v, 加速度 a,目标速度 V,则需要时间t=(V-v)/a

行驶距离是:(v+V)*t/2

假设计算出来的是浮点数,例如7.4,再位置7不会超速,位置8才超速。

假设计算出来的的是整数,例如7,则同上,位置7不会超速,位置8才超速。

所以上面的公式直接按整数向下取整加一即可。

for (ll i = 0; i < n; i++) { ll d, v, a; scanf("%lld%lld%lld", &d, &v, &a); if (a > 0) { if (v > V) { // 起始超速,结束超速 nums0.push_back({d, L}); } else { ll S = (V + v) * (V - v) / (2 * a) + 1; if (d + S > L) { //行驶 S 距离超过 V continue; } nums0.push_back({d + S, L}); } } else if (a < 0) { // 减速 if (v <= V) { continue; // 起始未超速 } a = -a; ll S = (V + v) * (v - V) / (2 * a); if (S * 2 * a == (V + v) * (v - V)) { S--; } nums0.push_back({d, min(L, d + S)}); } else { // 匀速 if (v <= V) { continue; } nums0.push_back({d, L}); } }

之后二分查找来判断这个路段是否有摄像头即可判断这个车是否可以被抓拍到。

nums1.reserve(n); // 被拍到的车辆 for (auto [l, r] : nums0) { auto it = lower_bound(caremas.begin(), caremas.end(), l); if (it == caremas.end()) { continue; } if (*it > r) { continue;
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/3 7:03:02

结合Diffusers生成图像解释复杂概念

结合Diffusers生成图像解释复杂概念 在信息爆炸的时代&#xff0c;企业与个人每天都在产生海量文档——从产品手册到内部培训资料&#xff0c;从客户合同到技术白皮书。然而&#xff0c;这些知识往往沉睡在PDF或硬盘角落里&#xff0c;难以被高效利用。传统的搜索引擎依赖关键…

作者头像 李华
网站建设 2026/2/9 5:44:17

家具购物商城|基于java+ vue家具购物商城系统(源码+数据库+文档)

家具购物商城 目录 基于springboot vue家具购物商城系统 一、前言 二、系统功能演示 三、技术选型 四、其他项目参考 五、代码参考 六、测试参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a; 基于springboot vue家具购物商城系统 一、前言 博主介绍&…

作者头像 李华
网站建设 2026/2/8 16:41:13

宝塔线彩带主图买卖点 趋势 操盘控盘 无未来函数

{} DRAWGBK(O>0,RGB(33,47,58),RGB(0,0,0),0,02,0);{渐变色灰下黑背景} MA5:MA(CLOSE,5),COLORWHITE; MA10:MA(CLOSE,10),COLORYELLOW; MA20:MA(CLOSE,20),POINTDOT,COLORMAGENTA; MA30:MA(CLOSE,30),COLORRED; MA60:MA(CLOSE,60),COLORGREEN LINETHICK1; MA120:MA(CLOSE,1…

作者头像 李华
网站建设 2026/2/3 19:59:10

【大模型开发必看】Open-AutoGLM源码中的5个关键设计模式

第一章&#xff1a;Open-AutoGLM源码架构全景解析Open-AutoGLM 是一个面向通用语言模型自动化推理与生成优化的开源框架&#xff0c;其核心设计理念是解耦模型调度、任务编排与后端执行。整个系统采用模块化分层结构&#xff0c;支持灵活扩展与高性能推理流水线构建。核心组件构…

作者头像 李华
网站建设 2026/2/11 6:38:05

python新闻采集与订阅平台_f701pot2_027

目录 具体实现截图项目介绍论文大纲核心代码部分展示可定制开发之亮点部门介绍结论源码获取详细视频演示 &#xff1a;文章底部获取博主联系方式&#xff01;同行可合作 具体实现截图 本系统&#xff08;程序源码数据库调试部署讲解&#xff09;同时还支持Python(flask,django…

作者头像 李华
网站建设 2026/2/5 17:18:40

7 款论文降重 + 降 AIGC 率工具测评:谁能帮你搞定查重?

当 “论文 AIGC 检测” 成为高校标配&#xff0c;“降重 降 AI 痕迹” 成了每个学生的刚需 —— 但不同工具的效果、价格、适配场景天差地别。今天我们从PaperXie开始&#xff0c;测评 7 款主流工具的真实表现&#xff0c;帮你选到最适配的那一个。 一、PaperXie&#xff1a;…

作者头像 李华