说一些对 Div.3 比赛的所思所感 and 致歉贴

学术版

chen_zhe @ 2022-08-08 13:05:16

大家好我是 chen_zhe,也是本次 Div.3 月赛的审核员。发布这个贴子主要是希望自己能够说一下这场比赛自己当时在选题、组题时的想法,也想指出本场比赛确有的不足之处,以供后人参照。

一、Div.3 的定位

既然这场比赛叫做 Div.3 月赛,难度自然是弱于月赛的 Div.2 的,大致是在入门-普及,这是难度的定位。那么自然会有人认为:这和普及组月赛有什么区别呢?

普及组月赛的限制在于,其只能遵从 CCF 的大纲出题,一切超出了大纲规定的限制(\geq 6 级)的内容都无法出现在其中。而大纲的限制又显得颇为奇怪,例如以下都是不能出现在普及组月赛中的内容:

优先队列、并查集、线段树和树状数组、DAG、分治、搜索剪枝、记忆化搜索、Kruskal、Dijkstra、Floyd、拓扑排序、二分图染色、LCA、树形 dp、抽屉原理、构造……

那 Div.3 的想法就是,抛开前期的一些送分题之外,将这些不能出现在普及组月赛的算法和数据结构的套路题也给出出来。它们其实大多数算不上难,而且不少的 CSP-J 参赛选手也或多或少学过一些这类知识点,但是 CSP-J 的整体趋势是越来越易,而 CSP-S 对算法、数据结构的灵活性是较高的,套路题没有那么多,但不会套路又何谈更灵活的运用呢?所以 Div.3 的另外一重想法就是增加一些套路题、典题,供选手们学习运用。

此外,我特意选择的是 ACM 赛制而非常规的 OI/IOI 赛制,这也是为了和普通的月赛 Div.2 与普及组月赛进行区分。普及组月赛采用了 OI 赛制,选手无法得到及时的反馈,FST 概率大;IOI 赛制在预期中一版面的 AK 下又感觉无法区分同分选手(特别地,洛谷无法按照提交时间进行排序)。ACM 赛制既可以给选手提供及时反馈,又可以根据选手的手速以及代码的稳健性去区分选手。这一场比赛也因此加入了一些 corner cases,以检测选手的细心程度,也想着给这个阶段的选手一些教育性的启发。

这样一来的 Div.3 就成为了前期送分,中后期以偏向套路题为主的异常比赛,也就是你们所见到的 AyaOI Round 1。

二、组题时的想法

其实在最一开始的时候,我对 Div.3 的期望其实是 6 题。这六题分别是现在你们看到的 ABCD()H,其中括号之中的那个题被换掉了,原题是个 2KB 的暴搜。

这样的难度无疑会造成一种强烈的撕裂感,因为 ABCD 其实都是简单题,然后后面配个 2KB 暴搜,再来个线段树题,难度差异非常地大,不足以起到训练价值,因此扩充并且换题到了 8 题,也就是你们现在看到的 8 题。

那么这 8 题,当时选题的想法分别如下:

  • A:期望就是个 PJ T1 的模拟。实际上这个题原本只要求判断有没有炸弹,但是在传题的时候多了个判断有没有王炸,当然这并不影响题目难度。但是实际赛后反馈是本题难度偏大。

  • B:期望就是个 PJ T1-T2 的模拟。实际上这个题的题目灵感就是麻将,但是题意的形式化做的比较多。在期望下是枚举全排列,或者使用分类讨论即可通过的题。但是实际赛后反馈是题目看不懂。

  • C:期望是个类似于 CF 3A 的小构造。实际上这个题的题意也是有点太形式化,增加了题目阅读理解难度。这个题有 m=1 的 corner,以及要开 long long,不过似乎很多选手还是注意到了这些。

  • D:期望是难度类似于 PJ T2 的题。这个题实际上考察了最简单的数论知识和乘法原理。或许是因为它题意更好懂一些,也有可能是难度较 C 稍低,通过量稍高于 C。似乎这种简单小思维题有不少选手还是比较喜欢的。

  • E:期望是难度稍高于 PJ T2 的题。这个题考察了 map 的运用,也考察选手一定的立体空间感。这个题的测试点 25 专门构造出了卡 long long 的数据,本质是为了教育普及小朋友要好好计算一下数据范围,但是当时选择这题也其实有点担心会被喷出这种 corner 没有意思。不过其教育意义还是更胜一筹吧,毕竟 CCF 这两年的题目又有 ull 又有先除后乘之类的坑点。这个题还有一个点在于出题人随手卡了 unordered_map,不过我的意见是 umap 套 umap 这种非常劣的写法可以卡,正常写法就放过一命。

  • F:这里的选题是为了平衡后面的难度差距,期望难度在 PJ T3 左右,可能在 CF 上也得是个 1A 难度的题。这里选择了一个比较套路也比较简单的构造题,见过类似技巧可以做的很快,但是没有的话也可以自己花点时间想出来。

  • G:这个题的选择就是突出了我之前所强调的套路训练。这个题如果见过用双指针维护的套路那么期望下就是比较快地能过掉这个题,没有见过的话学习一下套路就可以当做例题训练掉了。

  • H:这个题的选择突出了之前我所强调的超越普及组考纲的训练。一些 CSP-J 阶段的选手可能学过线段树,因此也想着选择一个比较套路的转化题。这个题码量适中,只要求区间加/全局 max,也考察了二分的知识,思维量也不大,难度上确实比较贴合 Div.3 的压轴题。

三、赛后的反馈

我个人对这场比赛的总体选题还是满意的,因为作为第一场 div.3 其难度较易,题目较套路,也会对水平较低的选手一定的启发意义。但是赛后的反馈其实比我想象的要差。而这主要体现在题面过于形式化,读题上有困难,例如如下:

  • (T2)不明白 P 是一个长度为 5 的排列是什么意思;
  • (T2)为什么是 S_{P_1}-1=S_{P_2}=S_{P_3}+1 而不是 a_{P_1}-1=a_{P_2}=a_{P_3}+1
  • (T2)P 是不是自己指定的?P 是从哪里来的?
  • (T3)什么叫一个序列的异或和?

实际上其实对于很多有一定水平的选手(也包括我在内),他们是不会考虑到上述问题的。“排列”、“异或和”等知识会被默认为基础知识,认为哪怕是刚入门的小朋友都懂得这些概念,当然实际上他们会在理解这些概念上出现问题。

如果你因为形式化题面的阅读理解产生困难,从而影响了你的赛时体验,我愿意道歉。

当然也值得指出的是,现在的部分比赛对形式化题面的要求有些矫枉过正,尽管可能套个题面背景会使得多出一些无关紧要的话,但是这确实降低了理解题意的难度,特别是对于刚入门的小朋友而言。以这个入门赛的 B 题为例,现在的题面是这样的:

定义长度为 5 的序列 S 为「好的」,当且仅当存在长度为 5 的排列 P,满足 S_{P_1}-1=S_{P_2}=S_{P_3}+1S_{P_4}=S_{P_5}。现有一长度为 5 的整数序列 a,满足 0\le a_i \le 9(1\le i \le 5)。其中 a_1 \sim a_4 给定。试判断是否存在 a_5 满足 a 为「好的」。其中,长度为 5 的排列 P,指的是一个长度为 5 的数列,其中 1,2,3,4,5 在这个数列中出现且只出现一次。

如果改成这样,尽管它并不形式化,但是是不是能够让大家做的更舒服一些呢?

麻将牌牌面上的数字介于 09 之间,你现在有四个麻将牌,你现在可以再抽一个麻将牌,问是否存在一种可能,让你手上的 5 个麻将牌,其中有三个组成一个顺子(牌面数字连续),其余的两个组成一个对子(牌面数字相同)。

这些或许是以后如果还有类似定位的比赛所需要考虑的。

四、其他

实际上因为目前的 Div.3 的定位还是被认为和普及组月赛重合度较高,因此 Div.3 比赛的后续筹备工作是处于暂停的阶段。恢复时间待定。

这一场 Code Golf 大家的参与度还是意外地高的,也让人感到一种惊喜。要让代码尽可能短,简化代码逻辑是关键的一环,也很欣喜 Div.3 会在这个环节给一些参与者提供一些启发。


by xzy090626 @ 2022-08-08 13:05:48

支持 cz!


by xs_siqi @ 2022-08-08 13:07:16

前排资瓷


by HYdroKomide @ 2022-08-08 13:08:00

来晚没参加上,可惜了


by LLL2 @ 2022-08-08 13:08:26

t2读不懂就有点儿离谱了


by LLL2 @ 2022-08-08 13:08:37

这怕不是语文没学好(


by 654179_qwq @ 2022-08-08 13:09:37

qpzc


by WaterSun @ 2022-08-08 13:10:25

支持


by 违规用户名742628 @ 2022-08-08 13:10:52

注你谷Div.3越办越好。


by myster1ous @ 2022-08-08 13:10:52

qpzc!


by 蒟蒻炒扇贝 @ 2022-08-08 13:11:23

好!


| 下一页