OJ 功能介绍 使用手册

news2024/11/17 11:28:12

目录

服务器配置

OJ界面展示

用户管理

       一、批量导入(从方便管理角度建议以 学生姓名 作为 用户名 )

       二、批量生成临时用户 后期修改成需要的用户名和密码 (学生登录后修改密码)

       三、用户自行注册(填写邮箱获取验证码)该方式不方便管理,建议使用前两种方式。 

       四、 管理员角色说明

判题模式

          一、普通判题

         二、特殊判题

用例模式

         一、ACM题目

         二、OI题目

题目管理

一、OJ题目导入导出

二、导入QDUOJ、FPS格式的题目

三、导入其它OJ题目

四、手动录入题目

一、手动输入(平时老师出题或者录入教案中题目)

二、文件上传(用于样例较多,或已经有单独题面和测试数据包)

 训练题单

一. 公开训练

二、 私有训练

 创建比赛

一、ACM 比赛模式

二、OI 比赛模式

团队功能-班级

一、创建团队

​二、加入团队

三、管理团队

通知和公告发布

需要get的技能 

1、查看学员提交代码

2、训练题单给学员布置作业


服务器配置

腾讯云 2H4G 5M 60GB 轻量应用服务器  承载大约 200~400人使用,经过压力测试,评测并发速度可满足130人左右的在线比赛。系统镜像选 Ubuntu 22.04 LTS。

OJ界面展示

仿计蒜客界面 左题面 右编程区   提交编程代码前 点 语言 选择提交的语言 支持 C  C++ Python  JAVA语言,默认 C++语言 。

 题目有标签,按标签选择练习题目或者组成训练题单和作业。

系统适配移动设备 支持手机和平板电脑 ,方便家长和老师根据学员做题情况,主要是排名和评测结果。

 

用户管理

一、批量导入(从方便管理角度建议以 学生姓名 作为 用户名 )

 用户数据导入仅支持csv格式的用户数据。

  1. 共七列数据:用户名和密码不能为空,邮箱、真实姓名、性别、昵称和学校可选填,否则该行数据可能导入失败。
  2. 第一行不必写(“用户名”,“密码”,“邮箱”,"真实姓名",“性别”,“昵称”,“学校”)这7个列名
  3. 性别为男请使用“male”或“0”,女请使用“female”或“1”,不填默认为“secrecy”。
  4. excel表格保存为 csv 文件 用记事本打开,另存为,保存为UTF-8编码的文件,否则中文可能会乱码。

二、批量生成临时用户 后期修改成需要的用户名和密码 (学生登录后修改密码)

 

三、用户自行注册(填写邮箱获取验证码)该方式不方便管理,建议使用前两种方式。

四、 管理员角色说明

判题模式

一、普通判题

普通模式是程序在线评测平台(OJ)通用的判题模式,主要的实现逻辑步骤如下:

  1. 选手程序读取题目标准输入文件的数据

  2. 判题机执行代码逻辑得到选手输出

  3. 再将选手输出与题目标准输出文件的数据进行对比,最终得到判题结果

二、特殊判题

特殊判题(Special Judge)是指OJ将使用一个特定的程序来判断提交的程序的输出是不是正确的,而不是单纯地看提交的程序的输出是否和标准输出一模一样。

一般使用Special Judge都是因为题目的答案不唯一,更具体一点说的话一般是两种情况:

  • 题目最终要求输出一个解决方案,而且这个解决方案可能不唯一。
  • 题目最终要求输出一个浮点数,而且会告诉只要答案和标准答案相差不超过某个较小的数就可以,比如0.01。这种情况保留3位小数、4位小数等等都是可以的,而且多保留几位小数也没什么坏处。

用例模式

​ OJ的测试用例评测模式有以下几种:

​ ACM题目:默认(全部评测)、遇错止评(顺序评测)

​ OI题目:全部评测(得分加和)、子任务(最低得分)、子任务(平均得分)

一、ACM题目

1. 默认(全部评测)

​ 用户提交的代码将运行所有的测试用例,然后汇总结果。如果全部测试点都符合预期,则评测状态结果为Accepted,否则遍历所有测试点结果,将第一个非Accepted的测试点的状态作为最终结果。

2. 遇错止评(顺序评测)​

用户提交的代码将顺序运行所有测试用例,如果遇到某个测试点的结果(非Accepted)不符合预期,则评测结束,将该测试点的评测结果作为最终结果;否则一直遍历全部测试用例评测直至结束。

二、OI题目

1.全部评测(得分加和)

​ 用户提交的代码将运行所有的测试用例,然后汇总所有评测点的得分和结果。如果全部测试点都符合预期,则评测状态结果为Accepted,得分为该题目的满分;否则遍历所有测试点结果,加和所有测试点的得分,作为该评测的最终得分。

2. 子任务(最低得分)

​ 将全部测试用例按照配置的组数分成多个子任务评测组,每个子任务求该组测试点的最低得分,作为该子任务的得分,然后汇总加和所有子任务组的得分,作为该评测的最终得分。

题目管理

一、OJ题目导入导出

1. 导出题目

用于题目备份和迁移。点击选择需要的题目,便可以批量导出成一个zip压缩包,分别对应一个json格式的题目数据,一个对应名字的文件夹存放评测数据文件,具体的文件结构如下:

+-- problem_1000.json
+-- problem_1000
|   +-- 1.in
|   +-- 1.out
|   +-- ....
+-- problem_1001.json
+-- problem_1001
|   +-- 1.in
|   +-- 1.out
|   +-- ....

2. 导入本OJ题目

选择需要导入的题目数据zip压缩包,如果是自己做的题目需要批量导入请注意不要多一层文件夹进行压缩请保证题目json文件的名字与其对应的存放评测数据的文件夹名字一致。

二、导入QDUOJ、FPS格式的题目

  1. 请严格按照青岛oj的后台导出的压缩文件来上传。
  2. 请使用标准的FPS格式的题目数据文件(.xml)

三、导入其它OJ题目

(远程判题,题面拉取过来自动分类到对应题库,测试数据在对应服务器上,学员提交题目,远程判题并返回结果。)

导入HDU、Codeforces、POJ、GYM、AtCoder、SPOJ的题目,只需提供该题目的题号便可一键导入。

  • HDU和POJ的题号一般是 1000以上的数字
  • Codeforces和GYM的题号是1000A1000B、这种数字加大写英文字母的格式,具体请到https://codeforces.com (opens new window)查看
  • SPOJ的题号是大写英文字母,如TEST,具体请到https://www.spoj.com (opens new window)查看
  • AtCoder的题号是类似abc110_a这种格式,具体请到 https://atcoder.jp (opens new window)查看

添加方法:管理员进入后台,点击题目列表,添加远程OJ题目。

 然后添加上方的添加按钮,在弹出窗中选择OJ名字及题号,便可导入

准备工作:对应OJ注册账号,并在后台添加账号。 

 四、手动录入题目

 

上传题目测试用例数据可以选择手动输入、Zip文件上传两种方式

一、手动输入(平时老师出题或者录入教案中题目)

每次点击 添加用例 就可以手动填入该用例的输入与输出,该方式比较适合题目数据简单的,同时手动输入的题目数据将记录进数据库,下次对该题目进行修改可以直接获取,然后进行测试数据的修改,同时也会在服务器对应的 testcase 文件夹生成对应的文件。

二、文件上传(用于样例较多,或已经有单独题面和测试数据包)

对于普通题目,测试用例文件包括inoutanstxt四种扩展名

例如有两组测试用例,则对于普通题目测试用例的文件名分别为*.in, *.out(*.ans),或者*input*.txt, *output*.txt ,其他形式的文件后台均不识别。

压缩时,请将文件都放在压缩包的根目录,而不是包含在某一个文件夹中,比如正确的格式是:

├── 1.in          
├── 1.out
├── 2.in
├── 2.out

 然后压缩测试用例到一个zip中

注意:不要在这些文件外面套多一层文件夹,请直接压缩!!!

建议:尽量减少测试用例组数,这会一定程度上提高判题性能。日常练习测试样例在精不在多

 训练题单

训练分为公开训练私有训练,同时可自定义训练分类

两种训练其实都是题单功能,区别在于私有训练拥有记录榜单

1. 公开训练

  • 管理员可在后台添加公开权限的题目,同时能对题目进行排序。
  • 题目的所有用户提交情况以及用户自身对该题目的提交情况与题目列表的题目数据同步。

2. 私有训练

  • 管理员可在后台添加公开权限的题目,同时能对题目进行排序。
  • 题目的所有用户提交情况以及用户自身对该题目的提交情况与题目列表的题目数据同步。

公开训练的区别:

  • 非训练创建者和超级管理员访问私有训练需要对应的密码。
  • 超级管理员与训练创建者的题目提交情况不会计入记录榜单
  • 系统会同步普通用户对应训练题目的提交情况,生成对应的记录榜单。
  • 用户在进入私有训练后,只有在训练里面的题目提交,记录榜单才会继续更新记录。

系统同步用户对应题目数据的情况如下:

  • 后台管理员增加新的题目,系统会同步训练已成功访问的所有用户对应新题目的提交情况。
  • 后台管理员移除题目,系统会删除对应题目的榜单记录。

 用于留课后作业 可以方便看到每位学员题目完成情况。

 创建比赛

一、ACM 比赛模式

该模式是按照ACM-ICPC的比赛规则来进行,Contest设置项中的Seal Time Rank即为是否封榜,封榜后将不再刷新排名。可选择比赛结束前半小时,比赛前一小时,比赛全程封榜。

如果开启封榜,则封榜期间的角色不同如下:

  1. 封榜期间,超级管理员与比赛创建者不受影响,正常可查看题目统计数据,提交数据等,排行榜需自行开启强制刷新,同时提交结果可以及时看到评测结果,但不会纳入排行榜!
  2. 封榜期间,普通用户与非比赛创建者(包括其它管理员角色),可以及时看到自己的提交结果,但不可看到别人封榜后的提交,不能看到题目的统计情况,排行榜保持封榜前的排名数据。

注意:比赛一结束,默认所有数据变成正常显示,但后台可以设置比赛结束继续封榜!

二、OI 比赛模式

在OI模式下,选手的提交将根据得分点来计分,多次提交以最后一次提交或选择以最高得分的提交)为准,排名规则为多个题目的总分数。同样可以进行封榜操作,封榜时段,选手不能查看到实时的排行榜数据!

比赛一结束,默认所有数据变成正常显示,但后台可以设置比赛结束继续封榜!

比赛权限

  • 公开赛:所有用户都可以查看比赛详情、比赛题目、比赛提交,比赛排行榜、比赛讨论等,且都可以在比赛阶段随时提交。
  • 保护赛:所有用户都可以查看比赛详情、比赛题目、比赛提交,比赛排行榜、比赛讨论等,但在比赛阶段提交需要提供该比赛的密码!
  • 私有赛:仅支持有比赛密码的用户进入比赛,查看查看比赛详情、比赛题目、比赛提交,比赛排行榜、比赛讨论等,包括提交。

 后台比赛题目列表管理页面如下:

教师在从公共题库中选择题目当作比赛题目时需要注意:大部分题目均 题解AC程序”,从公共题库选择后需要修改题目:

操作如下:先将选手程序前面的对勾 点取消,待比赛结束后,再勾选恢复。

团队功能-班级

        团队可以看做是一个独立的小OJ,里面包含了现有OJ的题目、训练、比赛、评测、讨论、公告、排名等功能,其中各个团队的数据与OJ主站的数据 完全隔离,各个团队可以自定义属于自己的题目、比赛、训练等,支持团队中的题目申请公开到主题库。

团队分为公开团队、保护团队、私有团队

  • 公开团队:加入无需申请
  • 保护团队:加入需要申请
  • 私有团队: 需要邀请码才能申请加入

一、创建团队

以下限制只对 非 普通管理员、题目管理员、超级管理员的普通用户:

  • 每个用户创建团队的前提为通过20道题目

  • 每个用户每天可以创建的团队数量为2

  • 每个用户总共可以创建的团队数量为5

  • 以上数据为默认数量,可以通过开关设置修改,甚至禁止普通用户创建团队。

  • 用户在登录之后,便可以创建团队

  • 输入团队的名称、简称、简介、描述,选择权限和是否显示即可创建属于自己的团队
  • 二、加入团队

    管理员把 团队名称 告诉用户,用户登录后,点击指定的团队进入团队主页,点击右侧的申请加入即可加入团队。

  • 对于公开团队是直接加入,无需团队管理员审批!
  • 对于保护团队需要输入加入理由,等待团队管理员审批!
  • 对于私有团队需要输入正确的邀请码和加入理由,等待团队管理员审批!

    三、管理团队

团队角色分为:

  1. 申请中
  2. 申请被拒绝
  3. 普通成员
  4. 管理员
  5. 超级管理员(创建团队的Owner也是超管)

注意:主站的超级管理员与创建团队的Owner拥有同等最高权限,拥有解散团队的权限

  • 在团队比赛中:比赛创建者、团队超管、主站超管不纳入排行榜计算
  • 在私有训练中:比赛创建者、团队超管、主站超管不纳入记录榜单计算
  • 在团队信息中:团队Owner、主站超管才可以更新团队信息
  • 团队管理员、团队超级管理员、主站超管可以管理题目、管理训练、管理比赛、管理公告
  • 团队管理员、团队超级管理员、主站超管可以点击团队内的题目管理,选择需要公开到主站题库的团队题目,点击申请即可。申请后,会发消息告知主站的超级管理员和题目管理员对题目进行审批,管理员则可以在后台进行审批,审批通过的团队题目则会加入到主题库中。
  • 团队题目的统计数据、用户的提交数据在团队内和主站中的数据是隔离的!

通知和公告发布

  1. 通知和公告都仅有超级管理员可操作
  2. 通知是系统消息通知,每个小时推送一次到用户的站内消息系统

 

需要get的技能 

1、查看学员提交代码

入 首页 ,点击 评测,点击 C++ / python 语言栏即可查看 学员提交的代码及测试点正确/错误情况 (OI题目) 包含编译错误,方便教师答疑。如果修改了题目测试点,可以点击 重新 进行对此代码重新评测。

 学员可以选择 “ 我的” 只查看自己提交代码通过情况。 管理员可以 筛选 题目ID 或者 输入学生用户名,只查看某位学员评测情况。

2、训练题单给学员布置作业

 把上方地址栏里面生成的链接 复制粘贴给学员: 2.小数运算 - 花叶创客编程OJicon-default.png?t=N3I4http://49.232.15.153/training/2

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/486232.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Nmap入门到高级【第九章】

预计更新Nmap基础知识 1.1 Nmap简介和历史 1.2 Nmap安装和使用方法 1.3 Nmap扫描技术和扫描选项 Nmap扫描技术 2.1 端口扫描技术 2.2 操作系统检测技术 2.3 服务和应用程序检测技术 2.4 漏洞检测技术 Nmap扫描选项 3.1 扫描类型选项 3.2 过滤器选项 3.3 探测选项 3.4 输出选项…

【致敬未来的攻城狮计划】— 连续打卡第二十天:RA2E1_UART —— 串口通信例程

系列文章目录 1.连续打卡第一天:提前对CPK_RA2E1是瑞萨RA系列开发板的初体验,了解一下 2.开发环境的选择和调试(从零开始,加油) 3.欲速则不达,今天是对RA2E1 基础知识的补充学习。 4.e2 studio 使用教程 5.…

Docker consul服务注册与发现

目录 一、服务注册与发现 1、什么是服务注册与发现 2、什么是consul 3、consul提供的一些关键特性 4、容器更新与发现 二、基于nginx与consul构建自动发现即高可用的Docker服务架构 consul服务器部署 1、建立consul 2、查看集群信息 3、通过http获取集群信息 regist…

SpringBoot+vue文件上传下载预览分片上传

学习链接 Blob & File 上传文件 前台 整个过程,就是在使用FormData 添加 上File(这个Blob),并且key要和后台的名字对应上在点击上传按钮开始上传之前,使用了URL.createObjectURL(File)创建blobUrl,…

MySQL数据库之库表管理

一、常用的数据类型: 类型含义tinyint(n)1个字节,范围(-128~127)smallint(n)2个字节,范围(-32768~32767)mediumint(n)3个字节,范围(-8388608~8388607)int(n)4个字节(32个比特位),整数型,范围(-2147483648~…

JavaEE - 网络编程

一、网络编程基础 为什么需要网络编程? 用户在浏览器中,打开在线视频网站,如优酷看视频,实质是通过网络,获取到网络上的一个视频资源。 与本地打开视频文件类似,只是视频文件这个资源的来源是网络。 相比本…

KALI入门到高级【第五章】

预计更新第一章 入门 1.1 什么是Kali Linux? 1.2 安装Kali Linux 1.3 Kali Linux桌面环境介绍 1.4 基本命令和工具 第二章 信息收集 1.1 网络扫描 1.2 端口扫描 1.3 漏洞扫描 1.4 社交工程学 第三章 攻击和渗透测试 1.1 密码破解 1.2 暴力破解 1.3 漏洞利用 1.4 特…

模糊PID(模糊规则表)

模糊PID的模糊化相关内容,请参看下面的博客文章: PLC模糊控制模糊PID(梯形图实现+算法分析)_RXXW_Dor的博客-CSDN博客博途PLC的模糊PID控制详细内容请查看下面的博客文章:Matlab仿真+博途PLC模糊PID控制完整SCL源代码参考(带模糊和普通PID切换功能)_博途怎么实现模糊pid_…

后端程序员的前端必备【Vue】 - 05 class与style绑定、表单输入绑定、Vue生命周期

class与style绑定、表单输入绑定、Vue生命周期 1 class与style绑定1.1 绑定class1.2 绑定style1.3 练习 2 表单输入绑定3 Vue生命周期3.1 vue生命周期3.2 组件的生命周期钩子 1 class与style绑定 操作元素的 class 列表和内联样式是数据绑定的一个常见需求。因为它们都是 attri…

【操作系统】操作系统内核

图灵机 当系统中有一个CPU的时候 ,MR就是它的状态 当系统中有n个CPU的时候,MR1,MR2…MRn 是它的状态 IRQ和NMI是低电平有效信号 NMI不可屏蔽中断 6502的CPU一共40个引脚 eflags寄存器里的 IF 表示 interrupt enable 1表示可以响应中断,0表示…

破解马赛克有多「容易」?

刷短视频时,估计大家都看过下面这类视频,各家营销号争相曝光「一分钟解码苹果笔刷背后内容」的秘密。换汤不换药,自媒体们戏称其为「破解马赛克」,殊不知让多少不明真相的用户建立起了错误的认知,也让苹果笔刷第 10086…

【网络编程】demo版UDP网络服务器实现

文章目录 一、引入二、服务端实现2.1 创建套接字socket2.2 绑定bind2.3 启动服务器2.4 IP的绑定2.5 读取数据recvfrom 三、用户端实现3.1 绑定问题3.2 发送数据sendto 四、源码 一、引入 在上一章【网络编程】socket套接字中我们讲述了TCP/UDP协议,这一篇就是简单实…

保护移动设备免受恶意软件侵害优秀方法

几天前,移动恶意软件攻击增加了500%显然,我们大多数人都不知道不能很好地保护我们的手机下面小编揭秘有效保护移动设备免受恶意软件侵害的最佳方法。 1、使用移动反恶意软件 恶意软件很容易感染智能手机和平板电脑,因此在设备上安装可靠的…

douyin 之xgorgon0404参数

如果我们想要看抖音的数据,在抓包的时候,会发现有一个xgorgon参数,在请求接口的时候,只需要在请求头携带xgorgon参数,就能获得响应后的数据。 目前抖音的xgorgon0404算法已经还原了, 下面是一个请求的demo。代码如下:…

计算机网络可靠传输的三种基本实现机制

可靠传输的means 在数据链路层会给上层网络层提供可靠传输或者不可靠传输,不可靠传输是指检测到传输差错的时候只是丢弃该分组而不进行任何处理,而可靠传输会给发送者一个信号进行重发该分组。 以下给出的三种基本实现机制是提出一些问题,慢…

截图的背景色如何去除?这里介绍一个小工具

屏幕截图,是方便常用的功能。例如从网页或者视频中截图。但是有时候想去除截图中的背景颜色,怎么办?下面这个案例介绍如何去掉截图中的蓝色背景色。 这个小工具就能帮你方便实现。Web端的便捷小工具链接: http://www.artvily.com/renderCase…

深度学习框架发展趋势

深度学习方法的发展是推动深度学习框架进步的最大动力,因此深度学习框架的功能和设计应顺应 算法和模型的发展趋势: 第一,易用性。深度学习领域仍处于快速发展期,参与者和学习者不断增加,新模型大量提出。因 此&#…

深入篇【C++】类与对象:拷贝构造函数详解

深入篇【C】类与对象:拷贝构造函数详解 ①.拷贝构造函数Ⅰ.概念Ⅱ.特征1.重载形式之一2.参数唯一3.形参必须传引用4.编译器的拷贝函数5.典型调用场景 ②.总结: ①.拷贝构造函数 Ⅰ.概念 在创建对象时,能否创建一个与已存在对象一模一样的新…

[架构之路-186]-《软考-系统分析师》-5-数据库系统 - 关系型数据库、操作型数据库、数据集市、数据仓库的区别?

目录 总体架构: 一、数据库 二、关系型数据库 三、SQL与数据库 四、 分布式数据库 五、数据仓库 1. 概述 2. 架构 3、数据仓库的主要特征 3、1 面向主题性 3、2 集成性 3、3 非易失性 3、4 时变性 总体架构: 一、数据库 数据库是“按照数据…

【链表OJ题 1】反转链表

目录 题目来源: 代码实现 1、方法一 1.1分析 2、方法二 2.1 分析 题目来源: 力扣 题目描述: 代码实现 1、方法一 struct ListNode* reverseList(struct ListNode* head) {struct ListNode* prev NULL, * cur head;while (cur){st…