历年 CSP-J 第二轮算法题型分析与总结
作者:
| 更新日期:二分、线段树、模拟、动态规划、最短路
本文首发于公众号:天空的代码世界,微信号:tiankonguse
零、背景
CSP-J/S 是从 2019 年开始举办的。
截止目前,我已经完成了 2019 年以来所有 CSP-J 第二轮编程算法题,并输出了题解。
今天打算统计一下 2019 年到 2024 年近 6 年 CSP-J 编程算法的难度、题型,从而总结出常见的题型。
代码地址: https://github.com/tiankonguse/leetcode-solutions/tree/master/other/CSP-J/
一、题解
历年题解及题目整理在下表,点击第一列可查看具体比赛的题解。
比赛题目分类与题解 |
---|
CSP-J 2024 题解 A:扑克牌 入门 B: 地图探险 普及− C: 小木棍 普及/提高− D: 接龙 提高+/省选− |
CSP-J 2023 题解 A:小苹果 普及− B: 公路 普及− C: 一元二次方程 普及/提高− D: 旅游巴士 普及+/提高 |
CSP-J 2022 题解 A:乘方 入门 B: 解密 普及− C: 逻辑表达式 普及+/提高 D: 上升点列 普及/提高− |
CSP-J 2021 题解 A:分糖果 普及− B: 插入排序 普及/提高− C: 网络连接 普及/提高− D: 小熊的果篮 普及+/提高 |
CSP-J 2020 题解 A:优秀的拆分 入门 B: 直播获奖 普及− C: 表达式 普及+/提高 D: 方格取数 普及+/提高 |
CSP-J 2019 题解 A:数字游戏 入门 B: 公交换乘 普及− C: 纪念品 普及+/提高 D: 加工零件普及+/提高 |
二、难度
CSP-J/S 的难度依次是入门、普及−、普及/提高−、普及+/提高、提高+/省选−、省选/NOI−、NOI/NOI+/CTSC。
对于 CSP-J,每年有四道题,难度一般分布在入门、普及−、普及/提高−、普及+/提高这四个初级难度。
如下图,是历年来四道题的难度。
除了 2022 年四道题分别对应四个不同难度外,其他年份通常会有一道题难度提升。
2019 年,没有普及/提高−,提高一个难度为 普及+/提高。
2020 年,没有普及/提高−,提高一个难度为 普及+/提高。
2021 年,没有入门,提升两个难度为 普及/提高−。
2023 年,没有入门,提升一个难度为普及−。
2024 年,没有普及+/提高,提升一个难度为 提高+/省选−。
2022 年没有提升难度,并不代表当年题目较为简单。例如第三题是模拟语法树,对于大部分人来说仍然相当有难度。
总体来看,难度主要集中在三个级别:普及−占比 29.1%、普及/提高−占比 20.8%、普及+/提高占比 29.1%。
入门占比 16.67%,比例也不低。
三、题型
看 CSP-J 历年来的题型,涉及基础送分题、二分、线段树、贪心、模拟、动态规划、最短路等题型。
可以发现,基础题算是必出,快速幂也算基础题就是占比 100%。
出题概率大于 50% 的有:二分 66.7%,线段树 50%,模拟 83.3%,动态规划 66.7%。
出题较高的有 贪心 33.3%,语法树 33.3%,最短路 33.3%。
四、最后
看了历年的难度和题型,我的结论是二分、线段树、模拟、动态规划是必须要掌握的。
练习模拟的时候,可以使用语法树题型来练习。
另外还需要掌握最基础的图论知识最短路。
对于贪心算法,需要通过分析题目寻找特征,这需要一定的逻辑能力,只能通过多做题来提升这种能力。
《完》
-EOF-
本文公众号:天空的代码世界
个人微信号:tiankonguse
公众号 ID:tiankonguse-code
本文首发于公众号:天空的代码世界,微信号:tiankonguse
如果你想留言,可以在微信里面关注公众号进行留言。