认识OJ(Online Judge)

1 概述

在线评测系统(英语:Online Judge,缩写OJ)是一种在算法竞赛竞赛中用来测试参赛程序的在线系统,也可以用于平时练习。近年来(2016年或更早)亦出现一些针对求职面试的在线评测系统。许多OJ网站会自发组织一些竞赛。此外,OJ网站通常会设立用户排名,以用户的提交答案通过数多少或某个题目执行时间快慢为排名依据。

2 原理

算法竞赛通常采取黑盒测试,事先准备好一些测试数据,然后用它们来测试选手的程序。

在在线评测系统中,用户需要提交源代码至服务器,服务器会编译用户的源代码,然后执行源代码生成的可执行文件(或用解释方式执行,或直接执行脚本文件),得到其输出的结果,并与正确结果比较。

为防止攻击和恶意提交,服务器必须采取一定的安全措施,例如对用户提交的源代码实施过滤、将进程放入沙盒以进行隔离、对代码进行哈希以防止抄袭和重复提交等。

3 题目状态

在提交程序之后,在线评测系统会根据题目的测评情况,返回评测结果。只有返回“Accepted”状态,才表示题目通过,选手才会获得成绩。不同OJ评测结果略有出入,但常见的评测结果大致分为以下三类。

3.1 正在评测编辑

  • Pending:系统繁忙,用户程序正在排队等待。
  • Pending Rejudge:因为数据更新或其他原因,系统将重新判你的答案.
  • Compiling:正在编译。
  • Running & Judging:正在运行并与标准数据进行比较。

3.2 程序未通过编辑

  • Wrong Answer(简称WA):答案错误。
  • Runtime Error(简称RE):运行时错误,程序崩溃。
  • Compile Error(简称CE):编译错误。
  • Time Limit Exceeded(简称TLE):运行超出时间限制。
  • Memory Limit Exceeded(简称MLE):超出内存限制。
  • Output Limit Exceeded(简称OLE):输出的长度超过限制。
  • Presentation Error(简称PE):答案正确,但是输出格式不符合题目要求。在一些要求比较严格的比赛中,格式错也会被视为答案错误[2]

3.3 程序通过编辑

在评测过程中,只有未发生以上几种错误的情况下才算做通过。

  • Accepted(简称AC):程序通过。另外,在整场比赛中通过了所有题目又俗称“AK”或是“破台”。

一些比赛的测试点可以给出“部分分”,例如答案正确但不够优,或者选手没有完全完成题目所给的任务等。

4 分类

4.1 IO型

在这里插入图片描述

考试居多

特点

  1. 自己写头文件、主函数等
  2. 测试用例输入:自己用scanf获取
  3. 测试结果:用printf输出

4.2 接口型

在这里插入图片描述

特点

  1. 不需要写头文件、主函数等
  2. 提交后,会跟OJ服务器上其准备好的头文件、主函数等代码合并,再编译运行

测试用例:通过参数传过来

结果:一般通过返回值拿到,
在这里插入图片描述

也可能是输出型参数 (返回数组时)

img

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值