2020 吉林省赛出题反思

在经历了 2020 吉林省赛出题的糟糕体验以及赛中出锅后, 我打算写一下自己在整个出题过程中的一些错误以及一个出题流程(面向 ddl 出题),避免自己以后在出现锅。

不过我这么菜,大概以后没资格出题了。

出题过程中的问题

拖延症

在整个出题的过程中,出题队员普遍出题速度太慢。如果不催,那么及少选手会出题。事实上,直到最后一周,都有队员没有将完整的题面+数据+标程+题解写出来。

题目不规范

几乎所有出题人的题目都不够规范,要么存在歧义,要么有语法错误,要么输入输出靠猜。这导致后面需要组题人不断地修改题面,而这也是比赛出锅的最主要原因。

没有留时间做 review

在此次出题的过程中,题面和正解的 review 都不够充分。

题面的最终版本和网站上的版本没有让每个出题人去做一遍 review,而且没有让没看过题目的人检查题意是否有不清楚的地方。

此次出题过程中,验题的人数稍显不足,平均每道题只有一个人验题。而且大家普遍没有检验是否会放过“假算法”。

出题的要求没有了解清晰

在出题之前,我们对于题目的难度要求不够清晰,直接按照自己对于题目难度的理解来出题了。这导致原本中档题过多,区分度太差。

裁判组没有了解题意

这算是一个意外的锅。由于出题人基本上在打本省的比赛,无法当裁判,所以裁判对于题意的理解出现了偏差。

出题流程

出题时间

根据省赛的出题经验,一次出题至少需要六周。根据比赛的重要程度可以适当调整。

分发出题任务

在正式出题前,出题组需要讨论各个出题的 idea,分析题目的难度。之后将每个 idea 分配给各个组员(一般是同队选手)。如果讨论时发现合格 idea 不足,而 dll 比较紧的话,可以直接分配不同难度的题目给各个选手/队伍(但是要做好题目质量不足的准备)。

所以大家最好平时有一个出题的 ideas 库,出题时就拿来用。出题任务最好有 2 ~ 4 个的冗余,防止题目有误和出现原题。

完成题目内容

在确定哪些 ideas 进入候选名单后,负责人会通知提出 ideas 的同学完成题目内容的准备工作(如果工作过于不平衡的话,有时也会将 ideas 交给较空闲的同学)。题目内容一般包括:

  • 题目描述(包含样例输入、输出,可以是压缩的题意描述)
  • 输入、输出数据 Checker(如有需要)
  • 准程序解题报告及自评难度

出题过程最好使用 polygon 和 testlib 来进行,可以使用 git 来管理。对于所有的数据,必须有对应的 validator 来检查数据是否符合题目描述。

组题

组题人一般是出题的负责人(背锅侠)。一般由他来负责催出题人出题,规定 ddl。

同时他要负责编写题面,将其他人题目描述规范化,统一化。

反复验题

当一道题目完成题目内容并规范题目描述后,需要将题目挂在 OJ 上由其他出题队员反复检查题面描述是否有问题,数据有无锅,标程是否是“假”的,是否会让“假算法”过,是否有原题等问题。

检验题面

将所有题面交由几位英语较好的成员负责将题面润色,消除题面的语法错误、题面歧义,确保题面中不常用的概念有作出解释。润色完成后需要让原出题人 review,确保题意无误。

验题赛

邀请部分队伍在五小时内完成整份题目,并听取队伍反馈。

Final Check

根据验题的结果进行组题,让所有出题队员检查是否最终的题面和数据。之后将所有的题目编译打包,确保所有的数据都正确。

Onsite Check

将数据和题目部署在比赛的平台,并根现场台测试的结果来调整题目的时限。标准的时限空限应当至少为标程的两倍,但不要太大误导选手思路。如果出现了让“假算法”跑过的情况,需要决定是否重造数据。

参考

  1. 从零开始的出题指南 (0)—— 一些总结与反思
  2. 出题 - OI Wiki
  3. 「这一点都不好玩」:一份 ACM/ICPC 区域赛试题是怎么诞生的
Licensed under CC BY-NC-SA 4.0
Last updated on Sep 28, 2020 10:27 CST
comments powered by Disqus