出题教程
在题库页面,点击创建题目按钮,在弹出的对话框中填写题目名称和题目类型即可开始创建题目。
注:此时填写的 题目名称 并非用户在做题时看见的名称,用户在做题时所看见的名称会在后续添加题目描述时填写。 当你为某场比赛创建题目时,可以填写
xxx比赛 - A题 - Hello, world
、xxx比赛 - B题 - Hello, world 2
这样的名称来对题目进行标识。
一、题目类型介绍
1.1 标准输入输出题
由用户处理输入输出,即用户需要编写完整程序的代码。
1.2 函数题
用户不需要处理输入输出,只需要补全函数内容。
二、标准输入输出题
进入题目编辑页面,您需要准备如下内容:
2.1 基本信息
- 时间限制:用户程序的运行时间限制。
- 内存限制:用户程序的运行内存限制。
- 题目来源:如题目来源于某场ICPC竞赛。
题目校验:点击校验系统会检查出题是否达到要求,只有校验通过才能进入用户界 面中进行刷题。
2.2 题目描述
在题目描述中,你会需要填写:
- 题目名称:用户在做题时所看到的名称。
- 描述:题目的背景信息、题面。
- 输入格式:告知用户如何处理输入数据,及对应的输入数据的范围。
- 输出格式:告知用户应如何输出答案。
- 提示:一些测试样例的说明或者其它信息。
测试样例不在题目描述中进行准备,会在后续的 2.4 测试点
题目描述采用 Markdown 语法来编写,并且支持数学公式 Katex,您可通过 $
(行内) 或者 $$
(独自一行)来使用 Katex 数学公式。
注:题目描述中所有出现的变量、涉及到的数据范围,均应通过数学公式来标识。
题目描述支持多语言,一道题目添加多种语言时,用户可在刷题时更换题目语言。特别适合多语言、涉及需要翻译的题目。
2.3 裁判程序
裁判程序用于将 用户的输出 与 答案的输出 进行比较,也俗称 SPJ(Special Judge)。
当题面求解出来的答案可能存在多个,或者允许 用户的输出在某一精度范围内是正确的,这样就无法定义一个准确的输出文件来判断用户是否正确,这时就需要裁判程序。
每道题均需要有裁判程序,即使您的题目没有多组解,也应该选择一个。如果您不确定选什么,请选择 lcmp.cpp 或者 fcmp.cpp 均可。
注:出题时所提供的可选择的各种裁判程序示例,均来源于 Codeforces Polygon
您可根据您的答案在此选择常见的裁判程序,也可以自主上传。
关于裁判程序的写法:
- 出题时可选择一些常见的裁判程序,你可参照其进行调整。
- 裁判程序支持使用: testlib.h
- 裁判程序的返回值决定着判断结果,成功返回(0)表示AC,其他非零值表示WA。
2.4 测试点
测试点是对用户提交程序进行测试的数据集。
- 你只需要在此上传用户的输入,正确答案由后续上传的标准解答文件进行生成。
- 要想设置用户在题面中看到的测试样例,需要在此处选择对应的测试点,将其设为样例。这样做的目的是在为用户的程序进行测试时,样例也是测试中的一部分。
- 你可以在此配置OI测试点的子任务。
2.5 解答文件
您应至少在此上传一个且只上传一个标准解答文件,它将用于生成测试点的答案。
2.6 打包
当您需要将题目的各种数据导出时,需要使用打包功能将题目的各种数据打包,将打包成一个类 Codeforces Polygon
同款的压缩包。
当然,目前还并不能与 Codeforces Polygon
完全兼容。
三、函数题
函数题与输入输出题的区别仅在于需要出题人提供处理输入输出的文件及用户待补全函数文件。 其它诸如题目描述、裁判程序、测试点、解答方案的功能与标准输入输出题没有区别。
3.1 语言文件
如图所示,您需要在 语言文件
的标签栏中 ,编写对相关语言的支持。
相关说明如下:
-
在函数题中,用户只需要完成用户待补全函数的内容,不需要处理输入输出; 输入输出均在裁判测试程序中处理,并调用用户待补全函数。
-
在函数题中,用户待补全函数将替换裁判测试程序中的 @@@ 部分, 组成一个源码文件进行编译执行。其它与标准输入输出无差别。
四、出题要求
您可参考: