当前位置: 首页 > backend >正文

认识OJ(Online Judge)

目录

  • 1 概述
  • 2 原理
  • 3 题目状态
      • 3.1 正在评测编辑
      • 3.2 程序未通过编辑
      • 3.3 程序通过编辑
  • 4 分类
    • 4.1 IO型
    • 4.2 接口型

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

http://www.xdnf.cn/news/11248.html

相关文章:

  • Attribute特性定义及应用
  • 泛微e-office系统存在SQL注入漏洞
  • DFS(小白式超详细讲解以及代码讲解)
  • webpack之『使用横幅 Plugin』
  • ColorImpact v2.8.1.378 汉化注册版
  • libnet的使用详解
  • 高瓴张磊入籍新加坡,这代表了什么?
  • 各种Java加密算法-非对称加密
  • Ubuntu 12.04 常用软件
  • 在32位机器上实现64位数的除法
  • OpenCore黑苹果引导配置说明第九版-基于OpenCore-0.6.2-10-06-正式版
  • 免费收录网站搜索引擎登录口大全
  • Linux主机文件777,755,644权限详解
  • 启动应用程序出现COMDLG32.OCX找不到问题解决
  • Perl中的正则表达式
  • 什么是组态、组态的应用场景介绍
  • 4种吃子跳棋
  • 微信小程序自动化测试—自定义测试(Minium)
  • 富豪们的生活生活配置,豪宅搭配别墅泳池必不可少
  • tomcat点击startup.bat一闪而过
  • 嵌入式硬件入门——蜂鸣器
  • 二进制文件和文本文件到底有什么不同?(二)
  • 盘点时下最流行的十大编程语言优缺点,附2024年1月最新的编程语言排行榜单
  • SSM宠物店管理系统-计算机毕业设计源码93755
  • 在 Php 中把 Allow_url_fopen 打開的風險
  • AppleTalk:Apple 公司协议组--网络大典
  • 2000+ 道 Java面试题及答案整理(2024最新版)
  • 计算机出现假桌面怎么解决办法,Win10系统下“AppHangXProcB1”导致桌面频繁假死如何解决?...
  • Eclipse汉化教程(官方汉化包,傻瓜式操作,附带中英文快捷切换方式以及常见问题解决方案)(1)
  • 移位运算符