- 站务&反馈
QLUOJ 出题规范
- 2024-5-17 22:42:55 @
编者注:出题规范基于牛客竞赛出题规范,并进行了部分补充。
- 禁止在没有严格证明,并且没有使用暴力程序验证在数据范围内成立的情况下使用数学结论。(经典数学结论/数学定理/公理不在此行列)
- 判断是否成立,输出yes,no的题目中不能要求选手输出Ye5,n0等。
- 严格使用testlib.h编写val,否则必须使用过其他方式验证数据合法(例如在std中使用assert),但不建议使用testlib以外的方式校验数据。见:https://oi-wiki.org/tools/testlib/
- 禁止测试数据对std友好,必须包含将std卡到最大复杂度的测试数据。
- 输入、输出描述应该仅包含输入输出格式,数据范围,禁止仅在此处填写解题的关键条件。
- 输入输出描述必须包含变量、变量的数据范围、变量的输入输出格式,变量的含义,且使用LaTeX公式描述。LaTeX规范:https://oi.wiki/tools/latex/。
- 树上题目/图论题目,若题目未特殊声明,后台数据禁止完全随机,必须保证暴力算法和搜索不能通过。
- 如与解题的核心算法考点/题目难度无关,当出现多解时必须编写spj。
- 图论问题必须显式的说明是单向边还是双向边,在输入描述中必须指出测试数据中是否包含自环、重边等信息。
- 树上问题如果是有根树,必须显式的指出根节点或输入根节点,不能让选手通过输入的方式自己推导根节点。
- 禁止出现虚假数据范围,当无其他条件导致题目数据无法达到最大时,必须保证后台测试数据包含对于每个变量均达到最大值/最小值的数据。
- 输出为实数的题目应使用spj,并且保证分别使用long double和double的情况下,绝对和相对误差的最小值不超过0.5*EPS。
- 禁止以“某道题目是难题”为由,将时间空间卡的特别死,仅让使用c/c++的选手通过。
- 禁止题目要求读取数据直到文件结尾EOF,应使用T表示测试用例的组数。(此条基础题单部分练习有豁免权)
- 禁止限制选手是否输出行末空格,以及文件末的回车。必须保证无论选手是否输出行末空格,以及文件末的回车都能通过题目。
- 字符画题目禁止出现前导/后置空格
- 字符画题目禁止出现空格以外的空白字符。
- 若要求选手输入包含空白字符的字符串,必须在输入描述醒目位置提醒“输入一个包含空白字符的字符串”。
- 若要求选手输入字符串时包括空白字符整行读取,则必须给出该字符串的长度,例如:输入一个数字表示字符串长度,接下来一行输入一个包含空白字符的字符串...。
- c++ std禁止使用火车头。
- c++ std禁止使用内联汇编/与平台相关的指令集优化。
- c++ std禁止使用读入优化/非必要情况下的数组复用。
- std标准程序使用的时间/空间限制,在不存在近似复杂度的非预期解法下不得超过时间/空间限制的50%,但任何条件下均严禁超过80%。
- 对于区分easy,hard version的题目,应在醒目位置(一般是题目开头位置)注明与另一个版本的差异。
- 题目中禁止不加千分符或者科学计数法的情况下出现重复数位较多的数字,且该数字有明显误导性,例如,应改为或者100'000'007。
- 题目中空间限制不得低于64MB,否则可能会导致java等语言无法通过。
- 如与题目解题方式/题目难度无关,计算几何题目中输入点坐标时,使用整点而非浮点数。
- 输入的变量数目禁止达到及以上,当出现这种情况时,通过在题目中给出(随机)数据生成器的伪代码,或混合输入方式,例如输入个变量,后序使用题目中提供生成器的方式。
- 输出的变量数目禁止达到及以上,当出现这种情况时,要求输出异或和、或者求和取余的方式。
- 强制在线题目必须在样例解释/备注中添加加密前的数据。
- 要求输出个答案的异或和等场景时,必须在样例解释中提供部分有意义的信息。
- 禁止在题目中要求选手使用std::random或mt19937等库函数代替输入。必须在题目中提供随机数生成器。
- 要求选手输出取模/取余的答案时,若原本的答案存在负数,则慎重考虑使用“取模”还是“取余”。必须给出原本答案是负数的例子或在题目描述中进行强调。
- 禁止对除数为负数的变量使用“取模”的概念,例如“模-5”。
- NP问题带有剪枝的std,必须证明至少一个上界(无需保证上确界)满足最大范围数据的复杂度需求。
- 题目输入/输出中只能包含ASCII字符,禁止出现中文和unicode字符
- 在题目中提供数据生成器、强制在线的加解密算法必须真实有效,不得有误导或者任何欺骗行为
- 当题目需要输入字符串时,必须在输入描述中显式的指明字符串的字符集。
- 当题目描述中涉及到“集合”的概念时,需注意是否为“可重集”。当涉及到“子集”概念时,需注意是否为“真子集”,且是否包含“空集”。需在题目描述中显式给出,或不在题目描述中说明,但有样例支持且在样例解释中给出。
- 当题目涉及到子串/子区间/子序列/前缀/后缀等概念时,必须显式的注明①是否包含自身;②是否可以为空,或在样例中有所体现。
- 当涉及到有多少种不同的XX满足条件的描述时,需对“不同”做相应的解释。若题目首先需要选手进行某些“操作”,再求不同的“值”时,使用“本质不同”强调其值上的差别而非操作上的差异。例如:求本质不同的子序列/子串个数
- 中文描述的题目中,使用“连续子区间/子段”代替“连续子序列”
- 对于逻辑上判断yes,no的题目,应使用spj忽略大小写(在勾选spj时使用"nyesno"预设testlib spj)。且在输出描述中提醒:“你可以输出任意大小写的"Yes"或者"No"
- 在不暴露核心算法的前提下,博弈类题目需提供至少1组先手胜利,1组后手胜利的样例输入/输出。
- 在不暴露核心算法/坑点的前提下,对于输出格式中的任何分支都要满足,例如"无解输出-1,否则xxx",除非任何无解样例都会暴露核心算法/坑点,否则样例中必须包含无解。
- 禁止与题目完全无关的大段背景描述(超过300字)。
- 出题人应保证除c/c++以外,python和java的其中一种可以通过题目。
- 如果输入变量的个数多余,则必须在题目描述醒目位置提醒其数据范围,建议选手使用快速的输入方式。
1 条评论
-
admin LV 2 SU @ 2024-5-17 23:00:34
对于题库中现有题目,如果对题目存在违反上述规则的疑问,请联系MOD同学。
- 1