OJ全称OnlineJudge,也就是在线评测系统,是编程竞赛必备的自动判题平台,ACM、蓝桥杯、NOIP等赛事基本都依靠OJ完成程序评测,不需要人工阅卷。
在各类程序设计竞赛中,选手写完代码提交之后,不会依靠老师人工看代码对错,全部交给OJ系统自动完成检测。它除了判断运行结果是否正确,还会自动编译代码,检测程序运行的时间限制、内存占用情况,这些指标人工很难快速、准确完成,所以编程竞赛普遍使用OJ作为核心评测工具。
OJ采用黑箱测试的工作逻辑。系统会使用多组测试数据运行你的程序,对比程序输出和标准答案,比对时非常严格,空格、换行这类细节都会纳入判断。新手很容易踩坑,比如代码里写printf("Please input:");这类提示文字,这段文字会被当成输出内容参与比对,就算计算结果正确,整道题也会被判答案错误,拿到0分。
OJ的题目一般包含题目描述、输入格式、输出格式、样例输入、样例输出。样例只是用来帮助理解题目的示例,正式评测时会有多组测试用例,包含常规数据、边界值、极端大数等情况,数量可能十几组甚至几十组。像简单的a+b题目,不会只测试1+1,还会测试大数、进位等特殊场景。ACM比赛只要一组数据不通过,该题直接判错;蓝桥杯则是按通过的测试用例拿部分分数。
目前有不少常用OJ平台,比如北大POJ、杭电HOJ、国外UVA,还有适合新手的中文平台Dotcpp。不同平台侧重点略有差异,ACM相关OJ大多是英文题目,蓝桥、信奥类配套OJ以中文题目为主。不同平台的算法题目可以互通,不管是赛前刷题练习,还是日常训练算法、数据结构,都可以在OJ上提交代码练习,是学习竞赛算法的核心工具。



浙公网安备
33011002018290号