历年 CSP-S 第二轮算法题型分析与总结
作者:
| 更新日期:二分、拓扑排序、哈希、线段树、模拟、动态规划、最短路、LCA、博弈
本文首发于公众号:天空的代码世界,微信号:tiankonguse
零、背景
CSP-J/S 是从 2019 年开始举办的。
上篇文章已经记录了《近 6 年 CSP-J 算法题型分析》 .
这篇文章打算统计一下 CSP-S 的算法题型。
2019 年第一年,CSP-S 参考的 NOI 赛制,第二轮算法比赛分两天,每天三道题,共六道题,数据模型差异较大,参考意义不大。
2020 年开始,赛制与 CSP-J 完全一致,比赛只有 1 天,涉及四道题。
所以,我先做了 2020 年以来所有 CSP-S 第二轮编程算法题,并输出了题解。
今天也打算统计一下 2020 年到 2024 年近 5 年 CSP-S 编程算法的难度和题型,从而总结出常见的题型。
代码地址: https://github.com/tiankonguse/leetcode-solutions/tree/master/other/CSP-S/
一、题解
历年题解及题目整理在下表,点击第一列可查看具体比赛的题解。
比赛题目分类与题解 |
---|
CSP-S 2024 题解 A:决斗 普及− B: 超速检测 普及+/提高 C: 染色 提高+/省选− D: 擂台游戏 NOI/NOI+/CTSC |
CSP-S 2023 题解 A:密码锁 普及− B: 消消乐 提高+/省选− C: 结构体 提高+/省选− D: 种树 提高+/省选− |
CSP-S 2022 题解 A:假期计划 提高+/省选− B: 策略游戏 普及+/提高 C: 星战 省选/NOI− D: 数据传输 省选/NOI− |
CSP-S 2021 题解 A:廊桥分配 普及+/提高 B: 括号序列 提高+/省选− C: 回文 普及+/提高 D: 交通规划 省选/NOI− |
CSP-S 2020 题解 A:儒略日 普及+/提高 B: 动物园 普及/提高− C: 函数调用 提高+/省选− D: 贪吃蛇 NOI/NOI+/CTSC |
二、难度
CSP-J/S 的难度依次是入门、普及−、普及/提高−、普及+/提高、提高+/省选−、省选/NOI−、NOI/NOI+/CTSC。
对于 CSP-S,每年有四道题,难度一般分布在 普及、提高、省选、NOI 这四个初级难度。
如下图所示,是历年来四道题的难度分布。
CSP-S 的题目等级覆盖了6个等级,所以覆盖等级较大。
不过把 普及− 与 普及/提高− 当做一个等级,是最简单的入门签到题。
把 省选/NOI− 与 NOI/NOI+/CTSC 当做一个等级,是用来拉开差距的题目。
这样合并后就是四道题四个等级。
前两个低等级合起来占比 15%。
普及+/提高 占比 25%。
提高+/省选− 是核心等级,占比35%。
后两个等级合起来占比 25%。
三、题型
看 CSP- 历年来的题型,涉及二分、线段树、贪心、模拟、动态规划、最短路、拓扑排序、博弈等题型。
这里把二进制、枚举、快慢指针都归属基础题,所以基础题占比 80%。
题型概率大于 50% 的有:基础 80%,二分 80%,贪心 60%,动态规划 80%。
题型概率大于 30% 的还有 拓扑排序 40%, 线段树 40%,模拟 40%,哈希 40%,最短路 40%。
四、最后
针对历年的难度和题型,我的结论与 CSP-J 的结论一致,二分、线段树、模拟、动态规划是必须要掌握的。
此外,还需要掌握哈希、拓扑排序、最短路等。
另外再来看下题型分布,可以看到,CSP-S 的题比较综合,每道题都会涉及多个算法,所以这些常见算法的权重都比较高。
所以这里就对选手的要求比较高了。
不仅仅要学会上面各个题型算法,还需要能够根据题目与已知的算法,设计出一套复合的数据结构与算法,来达到目标。
面对这种情况,我们需要明白一件事:一道题的得分不是0分与满分,而是针对不同数据范围有不同的得分,我们的目标是尽可能的得高分。
所以我打算十一之后,先介绍下各个题型的算法,最后再介绍面对不同数据范围时,该如何尽可能的得高分。
《完》
-EOF-
本文公众号:天空的代码世界
个人微信号:tiankonguse
公众号 ID:tiankonguse-code
本文首发于公众号:天空的代码世界,微信号:tiankonguse
如果你想留言,可以在微信里面关注公众号进行留言。