problem.conf 配置方法
基本设置
problem.conf 中一行只能含有一个设置(不然可能会出现奇怪的错误?)
use_builtin_judger
大多数题的 problem.conf 里都要有 use_builtin_judger on
这句话,这表示您需要使用 OJ 自带的评测系统来评测这道题。
如果您出了一道奇奇怪怪的题(例如毒瘤的通讯题),就需要(联系管理员)帮您量身定做一个合适的 judger.cpp,此时就不需要写这句话了。
use_builtin_checker
如果 problem.conf 里出现了 use_builtin_checker
这句话,表示您将使用 OJ 自带的答案比较器来判断程序的输出是否正确。常见的自带比较器列表如下:
ncmp
:整数比较(long long范围内)
wcmp
:文本比较
rcmp
:实数比较(相对误差
rcmp4
:实数比较(相对误差
yesno
:当答案仅一行,为 YES 或 NO 时,忽略大小写差异。
栗子:use_builtin_checker ncmp
或者 use_builtin_checker rcmp6
。
如果该题需要 SPJ(即 Special Judge),则不需要写这个设置。SPJ 的实现参见 testlib.h(和 Codeforces 的 SPJ 是一样的),名称为 chk.cpp,和 problem.conf 在同一级文件夹下。
vsubmit_answer
设置该题目类型为提交答案型。即设置 submit_answer on。
with_implementer
设置该题目类型为交互型。即设置 with_implementer on。
n_tests
n_tests 设置了测试点数目(默认为 10)。
比如一道题有 20 个测试点,你就需要设置 n_tests 20。
n_subtasks
如果是一道捆绑测试的题,n_subtasks 设置了子任务数量。
比如一道题有 5 个子任务,你就需要设置 n_subtasks 5
。
subtask_in_folder
设置文件夹中子任务数据自动匹配,具体详见戴大爷的公告。
填写 subtask_in_folder on
即可。
subtask_end_...
如果没有设置子任务自动匹配,那么就需要手动设置每个 subtasksubtask 的结束位置。
例如有 1∼5 这些测试点,你要把
subtask_end_1 3
subtask_end_2 5
注意不使用 subtask_in_folder
时,必须设置 n_tests。
subtask_dependence_...
子任务依赖设置。如果子任务 3 依赖了子任务 1,那么当子任务 1 没通过时就不会测试 3,并且 3 的结果将会显示 Skipped
。
上述设置的表达:subtask_dependence_3 1
特别的,如果一个子任务依赖多个子任务(比如 4 同时依赖 1,3),你需要这么写:
subtask_dependence_4 many
subtask_dependence_4_1 1
subtask_dependence_4_2 3
你需要保证子任务依赖是一个 DAG(有向无环图),编号大小不做要求,否则会报错。
subtask_score_...
子任务分值。例如子任务 1 的分值为 30,你就可以这么写:subtask_score_1 30
。
相同 subtask 的得分只能被设置一次。
point_score_...
测试点分值。测试点默认得分为
例如把测试点 2 的分数设置为 11,你可以这么写:point_score_2 11
。
time_limit
时间限制。如果时限为 2 秒,填写 time_limit 2
即可。如果不填写,默认时间限制为 1 秒。
memory_limit
空间限制。如果空间限制为 512MB,填写 memory_limit 512
即可。如果不填写,默认空间限制为 256MB。
output_limit
输出限制。格式同 memory_limit,单位 MB,默认为 64MB。
time_limit_ms
以毫秒为单位设置时间限制。例如 1500 毫秒,可以填写 time_limit_ms 1500
。当它和 time_limit 同时出现时,默认使用前者。
input_pre
输入文件的前缀,比如输入文件为 tmp1.in,tmp2.in,...,tmp10.in,input_pre 就应当设置为 tmp,即填写 input_pre tmp
。
默认值为 input,如果设置了 subtask_in_folder on
,那么这可以不填写。
output_pre
输出文件的前缀,比如输出文件为 tmp1.in,tmp2.in,...,tmp10.in,output_pre 就应当设置为 tmp,即填写 output_pre tmp
。
默认值为 output,如果设置了 subtask_in_folder on
,那么这可以不填写。
input_suf
输入文件的后缀,例如 in,格式:input_suf in
,默认值为 txt。
output_suf
输出文件的后缀,例如 ans,格式:output_suf ans
,默认值为 txt。
has_input_pre
如果输入文件没有 input_pre 怎么办?比如很多题目的输入文件是 1.in,2.in,此时就需要填写 has_input_pre false
。
默认值为 true,即需要填写 input_pre。如果此项设置为了 false 并且还存在 input_pre 设置,那么 input_pre 设置视为无效。
has_output_pre
用来解决输出文件没有 output_pre 的问题,用法同 has_input_pre。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析