OJ 系统常用功能介绍 快速入门 C++ Python JAVA语言在线评测

news/2024/5/5 4:10:22/文章来源:https://blog.csdn.net/abilix_tony/article/details/130471569

技术支持微 makytony 

服务器配置

腾讯云 2H4G 5M 60GB 轻量应用服务器  承载大约 200~400人使用,经过压力测试,评测并发速度可满足130人左右的在线比赛。
系统镜像选 Ubuntu 22.04 LTS ,Ubuntu是最热门的Linux发行版之一,是一款开放源代码的免费软件,基于Debian Linux操作系统,其易用性和稳定性均非常出色,没有桌面系统资源占用率很低。

OJ界面展示

一、前端页面

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

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

二、管理员后台

点开每一项在右侧伸展操作界面

1、修改首页底部文字 左侧 常用设置 ——系统配置  此页面信息用户可以自主修改,保存立即生效。

2、修改首页轮播图

3、修改填写获取注册邮件和发送验证码邮箱

 

点击上方“设置”、进入“账户”,开启第一个及第二个,点击“生成新密码”,此密码即为授权码,填入【密 码】栏即可

 如果不开放注册可以不配置,默认已配置公用服务邮箱。

4、如何监控服务运行状态 

EduXMOJ仪表盘  右侧展开页面记录了服务器CPU使用率和内存占用情况 ,内存占用90%以内正常,超过90%Linux 会启用磁盘交换内存。
 

重点关注 后端服务判题系统 健康状态, 出现走失情况, SSH连接服务器 执行 sudo reboot 或者 登录控制台  执行 重启  操作 5分钟内服务会全起来。

 

三、移动设备端界面

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

 

四、题目快速分类

T 开头       一本通题目 入门和算法篇 (约600题)
P 开头       东方题目 含USACO 蓝桥杯等题目 (约1100题)
LD 开头     蓝桥杯官网基础和算法篇含VIP题目  (约280题)
LQ 开头     蓝桥青少组选拔赛 省赛 国赛历次真题  (约160题 )
CD 开头    电子学会等级考试C语言历次真题1-8级 (约110题 )
U开头        USACO官网训练1-6章 青铜和银组月赛题 中文翻译版 (约123题)
题目均带标签, 题目 页面打开后 上方 中间位置 勾选 标签 或者 页面右侧选择需要的 标签

用户管理

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

 用户数据导入仅支持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.小数运算 - 花叶创客编程OJhttp://49.232.15.153/training/2

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

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数组中的empty剖析

数组中的empty剖析 一、首先empty是怎么来的 直接通过new Array来新建,手动修改数组的length,逗号之间没有任何数据等 const array new Array(3); console.log(array); //* (3) [empty 3]const array2 [1, , 3]; console.log(array2); //* [1, e…

一起学 WebGL:绘制图片

大家好,我是前端西瓜哥。之前讲解了如何用 WebGL 绘制红色三角形,今天西瓜哥带大家来学习如何将图片绘制到画布上的技术:纹理映射(texture mapping)。 本文为系列文章中的一篇,请先阅读: 《一起…

python 系列 07 - 基于easyocr的ocr识别

OCR,光学文字识别,对文本资料进行扫描,然后对图像文件进行分析处理,获取文字及版面信息的过程。本示例通过easyocr库来演示。easyocr是一个比较流行的库,支持超过80种语言。安装的时候注意会附带安装torch库(一个深度学…

【Python】序列类型③-集合

文章目录 1.集合(set)简介2.集合的定义3.集合的遍历4.集合的常用方法 1.集合(set)简介 集合是一种无序可变的容器对象 集合最大的特点:同一个集合内元素是不允许有重复的,因此集合自带"去重"效果 2.集合的定义 集合的定义有两种方式: 使用{}进行定义,这种方式不能定…

获得 随机验证码(以图片为底层)

1:工具类 Slf4j public class RandomValidateCode {private static String baseNumLetter "1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ";private static String font "微软雅黑";//绘制验证码图片,返回验证码文本内容pu…

基于海鸥算法改进的随机森林分类算法-附代码

基于海鸥算法改进的随机森林分类算法 文章目录 基于海鸥算法改进的随机森林分类算法1.数据集2.RF模型3.基于海鸥算法优化的RF4.测试结果5.Matlab代码6.Python代码 摘要:为了提高随机森林数据的分类预测准确率,对随机森林中的树木个数和最小叶子点数参数利…

版本控制系统Git - 配置与基本使用

Git 1 Git简介1 Git概述2 Git的作用2.1 项目版本管理2.2 多人协同开发2.3 Git 的结构2.4 Git的工作原理 2 Git安装1 下载Git2 安装Git3 配置环境变量4 测试git是否安装成功5 安装git桌面工具(可以不安装) 3 Git基本操作1 设置Git用户2 新建仓库3 查看仓库状态4 添加到暂存文件5…

【python可视化】常用数据类型

🙋‍ 哈喽大家好,本次是python数据分析、挖掘与可视化专栏第二期 ⭐本期内容:常用数据类型 🏆系列专栏:Python数据分析、挖掘与可视化 👍欢迎大佬指正,一起学习,一起加油&#xff01…

C++入门3(C++新特性 using string auto)

C入门3 C新特性auto推导规则auto 作为函数的形参类型decltype基于范围for循环 typedef与usingC语言定义变量typedef 在C语言中的写法using在C11中的写法using与template的结合 string的简单使用 C新特性 auto推导规则 auto类型推导: auto定义的变量,可以根据初始化…

C语言单链表

本节目标: ①定义单链表结构体 ②初始化单链表 ③单链表增加结点(头插法、尾插法) ④删除指定结点 ⑤打印输出 目录 导入头文件 定义单链表结构体 初始化单链表 头插法 尾插法插入 删除指定结点 打印单链表 全部代码展示 导入头文件 …

中文大模型安全性哪家强?清华团队新发布

当前大型语言模型的火爆程度我们不用再进行赘述了,伴随着百度文心一言打响国内商业大模型第一枪,华为盘古,阿里通义千问,智谱ChatGLM,科大讯飞星火等国内公司纷纷开始布局。 另一方面由于众所周知的政策原因,和如火如荼…

5 分钟教你如何免费用上 GPT-4

今天要分享的就是普通用户,没有 OpenAI 账号,不需要写代码,你依然可以免费体验 GPT-4,当然,会有一些缺点,本篇文章将会手把手教你怎么用上免费版的 GPT-4 以及它的一些限制。 第一步:打开 Stea…

Threejs进阶之十三:CSS3DRenderer与Tween.js实现粒子小球按规律变化

今天我们使用CSS3DRendererTween.js实现Threejs官方示例中的粒子小球按规律变化的效果,先看下最终实现的效果 先来分析下,这个页面的动画效果是由512个小球组合起来的四种不同变化,分别是曲面、立方体、随机和圆球四种变化;下面我…

UDP的报文结构

UDP 报文结构 基本上所有的教科书上都是这样画的图, 但实际上 UDP 报文结构不是这样的, 这样显示应该是容易排版. 正确应该如下图 : 端口号 : 每个端口号在 UDP 报文里占两个字节, 取值范围就是: 0 ~ 65535 源 ip 和源端口描述了数据从哪里来, 目的 ip 和目的端口描述了数据去哪…

文本的清洗和标准化:如何处理混乱的数据?

❤️觉得内容不错的话,欢迎点赞收藏加关注😊😊😊,后续会继续输入更多优质内容❤️ 👉有问题欢迎大家加关注私戳或者评论(包括但不限于NLP算法相关,linux学习相关,读研读博…

操作系统考试复习—第三章 优先级倒置 死锁问题

当前OS广泛采用优先级调度算法和抢占方式,然而在系统中存在着影响进程运行的资源从而可能产生"优先级倒置"现象 具体解释为:在原本的调度算法设计中,高优先级进程可以抢占低优先级的CPU资源,先执行高优先级任务。但是存…

x265码控分析

D和R的关系 高分辨率量化 均匀量化:量化区间 ‘ Δ k y k − y k − 1 ‘ \Delta_ky_k-y_{k-1} ‘Δk​yk​−yk−1​‘,近似为常数;p(x)为信源概率密度函数,且 ‘ Δ k ‘ \Delta_k ‘Δk​‘的大小相对于p(x)的变化率充分小&…

电力NLP:指令票规范识别

文章目录 任务目的想法讲解数据集介绍1电气主语2操作任务判断数据集3操作内容判断数据集4错误词数据集 解法讲解程序、数据集下载链接 任务目的 识别调度指令票(或者其它操作票)是否规范。 想法讲解 按石第2014—16号定值单投入石双西线161开关6区保护…

突发!ChatGPT王炸级更新!支持GPT-4联网 Code Interpreter!

4月30日,OpenAI官方悄悄发布了联网版GPT-3.5。虽然名字变了,但使用体验却是换汤不换药,还是那套。 然而,万万没想到的是,刚过去没几天,昨天5月4日,鱼哥发现自己的Plus账号竟然多了一些能力&…

树莓派硬件介绍及配件选择

目录 树莓派Datasheet下载地址: Raspberry 4B 外观图: 技术规格书: 性能介绍: 树莓派配件选用 电源的选用: 树莓派外壳选用: 内存卡/U盘选用 树莓派Datasheet下载地址: Raspberry Pi …