背景

CSP-J/S 是从 2019 年开始举办的。

今天打算统计一下 2019 年到 2024 年近 6 年 CSP-J 编程算法的难度、题型,从而总结出常见的题型。

一、题解

历年题目整理在下表,点击可查看具体题目。

题号 2019 2020 2021 2022 2023 2024
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%。

四、最后

看了历年的难度和题型,我的结论是二分、线段树、模拟、动态规划是必须要掌握的。

练习模拟的时候,可以使用语法树题型来练习。

另外还需要掌握最基础的图论知识最短路。

对于贪心算法,需要通过分析题目寻找特征,这需要一定的逻辑能力,只能通过多做题来提升这种能力。