使用说明

运行要求、六大功能详解、数据约定、题目导入与常见问题,都在这一页。

一、运行要求

  • 系统:Windows,双击 OJJudge评测.exe 直接运行,无需安装、无需 Python 环境。
  • 编译器:需要本机装有 g++,默认路径 C:\mingw64\bin\g++.exe,可在各评测页的「编译器 / 标准 / 优化」里修改。
  • 默认标准:C++14,超时默认 10 秒/组,均可在界面调整。
想先看看软件长什么样?首页有软件实机截图,主界面和下载流程都有。

使用 macOS / Linux?没有打包好的可执行文件,请下载源码版压缩包,按下方第六节的步骤运行。

二、六大标签页

标签页作用
单题一个源码 + 一个数据目录,一键出分。结果表格逐组显示状态、得分、用时、期望与实际输出。
多题通过「添加」逐题填入题目名、源码、数据目录,一键全部评测;单题异常不中断后续,最后统一汇总总分。
对拍主程序 vs 暴力/标程,用随机数据找 bug。遇到分歧不中断,跑完全部轮后一次性汇总。
造数据填写自己写好的生成器源码与数量,批量生成 .in(和可选 .out)。
随机数据无需手写生成器:填输入格式、范围、数量即可生成随机 .in;附 AC 代码则顺带跑出 .out,留空只出 .in。
记录查看历史评测记录(单题 / 多题 / 对拍 / 造数据 / 随机数据每次运行自动保存)与内置改动日志。

状态说明

状态含义
AC输出与期望一致,得满分
WA输出与期望不一致,0 分
TLE超时(默认 10 秒/组,可调)
无输出程序没产出任何输出
CE编译失败(结果内含 g++ 报错)
缺答案该组没有 .out / .ans 期望文件

对拍的正确姿势

对拍需要三个程序:主程序(你想验证的题解)、暴力/标程(一定正确的对照程序,慢没关系)、数据生成器(每轮随机造一组输入)。三者都用标准输入输出:生成器写 stdout,主程序与暴力读 stdin 写 stdout。若原程序用了 freopen 固定文件名,请先改成标准输入输出。

三、编程语言与界面语言

评测用哪种语言

单题 / 多题 / 对拍三个页面都有「语言」下拉,可选 C++ / Python / Java。选「浏览」选中源码时,软件会按扩展名自动切换(.py → Python、.java → Java、.cpp → C++),三个页面的下拉始终保持一致。

语言运行方式需要装什么
C++用 g++ 编译成 exe 再运行MinGW-w64(WinLibs)解压到 C:\mingw64,或自备 g++ 并在底栏指定路径
Python解释器直跑源码,无需编译Python 3(安装时勾选 Add to PATH)
Javajavac 编译成 .class,再用 java 运行(类名取源文件名)JDK 17(需同时提供 javac 与 java,勾选 Add to PATH)

软件会在 PATH 上自动探测 Python 解释器与 JDK;缺环境时会在结果里给出明确提示(该装什么、勾哪个选项),不会直接报错退出。选 Python / Java 时不再要求填写编译器路径。

造数据与随机数据页的「答案程序 / AC 代码」也会按当前语言编译运行,所以用 Python 写的 AC 代码同样能直接产出标准答案 .out。

界面切成 English

底栏最右侧有「界面: 中文 / English」下拉,一键把标签页、按钮、表头、分区标题、底栏与状态提示整体切成英文,切回中文完全还原。评测日志与错误提示仍用中文,方便对照 OJ 报错习惯。

网页版对拍实验室也支持多语言

官网页面的对拍实验室同样可以换语言写:工作台上方有一排语言按钮,JavaScript / C++ / Python / Java 任选其一,切换后代码框里的示例会同步换成该语言的版本。

语言在哪跑代码约定
JavaScript浏览器内(Web Worker,带超时保护)写一个函数 main(input),收到本轮完整输入字符串,return 输出字符串
C++服务端真编译器(g++)完整程序,从 stdin 读、往 stdout 写
Python服务端真解释器完整程序,用 sys.stdin 读、print 输出
Java服务端真编译器(JDK)完整程序,public class Main,从 System.in 读、System.out 输出

随机数据的生成始终在浏览器里做(输入格式 + 范围),所以换语言不影响数据,只影响两个程序怎么写怎么跑——这与桌面版的行为一致。页面加载时会探测服务端有哪些工具链,缺失的语言按钮会灰掉并给出提示,不会点进去才报错。

服务端执行有硬性防护:源码 ≤ 64KB、输出 ≤ 256KB、编译 ≤ 25 秒、单轮运行 ≤ 5 秒,另有 CPU / 内存 / 进程数限制与频率限制,确保公网环境下可控。

四、评测约定与数据放置

数据目录下放 *.in(输入)与同名 .out(优先)/ .ans(期望输出)。源码名为 calendar.cpp 时,对应数据组为 calendar1.in / calendar1.out 等。

单题 / 多题评测同时支持两种写法:

  1. freopen 写法:程序用 freopen("<题名>.in","r",stdin) 读入、freopen("<题名>.out","w",stdout) 写出,评测时软件把每组 .in 复制为 <题名>.in,跑完读取写出的 <题名>.out 与期望比对。
  2. 标准输入输出写法:程序从 stdin 读、往 stdout 写,评测时软件把该组 .in 经 stdin 喂给程序,再捕获标准输出与期望比对,兼容洛谷 / tarjano 等 OJ 的常规写法。
两种写法同时存在时,优先采用程序写出的 <题名>.out。评测临时文件只产生在数据目录内,每次评测结束自动清理,不影响原始数据。

输出归一化:比对前会自动忽略每行行尾空白与末尾空行(OI 常规做法)。期望答案里多一个空格、行尾多个回车,都不会误判 WA;但行中间的空格与空行仍参与比对。

五、题目导入配置

启动时自动读取 exe 同目录的 题目导入.json,预填「多题」列表(只读一次,改文件后重启软件生效)。格式:

{
  "problems": [
    { "name": "题目名", "src": "源码完整路径(.cpp)", "data": "数据目录路径" }
  ]
}

六、macOS / Linux 源码版

软件用 Python 3 标准库 tkinter 编写,无第三方依赖;Windows 之外的平台直接运行源码即可,功能与 Windows 版完全一致。注意:tkinter 并非每个 Python 发行版都附带(部分精简版 / 自编译 Python 没有,且无法用 pip 安装),运行 python3 ojjudge.py 若报 No module named 'tkinter',请按下文换一个自带 tkinter 的 Python;Windows 用户也可以直接用 exe,无需 Python 环境。

环境准备

  • Windows:需本机装有 g++。推荐下载 MinGW-w64(WinLibs 版,解压即用),把压缩包解压到 C:\mingw64,使 C:\mingw64\bin\g++.exe 可用,无需安装器。
  • macOS:Python 3 用 python.org 官方版(自带 tkinter;macOS 系统自带的那份可能不带 tkinter,Homebrew 的 python 需先执行 brew install python-tk);编译器安装 Xcode 命令行工具 xcode-select --install,得到 clang++。
  • Linux(Debian/Ubuntu):sudo apt install python3 python3-tk g++。其他发行版安装对应的 python3、tkinter 绑定与 g++。

运行

  1. 下载并解压源码包,进入目录执行 python3 ojjudge.py。
  2. 务必在界面「编译器」一栏把默认的 Windows 路径改成本机编译器:macOS 填 clang++,Linux 填 g++。
  3. 「标准 / 优化」保持默认(C++14 / -O2),clang++ 与 g++ 均支持。

注意事项

  • 评测记录保存在脚本同目录的 评测记录.json;题目导入.json 放在同目录即可启动自动导入(路径写本机路径);编译器、标准、优化、分值、超时、对拍轮数等设置保存在同目录 ojjudge_settings.json,重启自动读回。
  • 编译器诊断输出已按平台处理编码(Windows 用 ANSI,macOS / Linux 用 UTF-8),正常不再乱码。
源码包内含 ojjudge.py 与 使用说明-源码版.md,SHA256 e02cf0db…9bef。

七、常见问题

问题处理
显示「无输出」确认程序有输出:freopen 写法检查文件名是 <题名>.out;标准输入输出写法会被自动捕获。
显示「CE」编译失败,看结果里的 g++ 报错信息,按提示修改源码。
找不到编译器在界面「编译器」一栏填入本机 g++ 完整路径(如 C:\mingw64\bin\g++.exe)。
多题只测了一个旧版本问题,当前版本已改为线程安全队列模式,单题异常不中断后续;请下载最新版。
macOS / Linux 能用吗可以,用源码版:需 Python 3 与 C++ 编译器,运行 python3 ojjudge.py,编译器路径改为 clang++ / g++。详见第五节。
答案明明对却判 WA先看是不是行尾空格 / 末尾空行差异——v1.6 起已自动忽略这类空白;若仍 WA,请比对结果表格里的「期望 / 实际」两栏定位真实差异。
对拍报告「运行异常」主程序或暴力程序非零退出(段错误 / 断言失败等)。软件会给出退出码,并把该轮输入存到工作目录的「问题数据」文件夹,直接拿来复现调试。

八、文件说明

文件说明
OJJudge评测.exeWindows 主程序(单文件,直接运行)
OJJudge源码-macOS-Linux.zipmacOS / Linux 源码版(ojjudge.py + 使用说明,需 Python 3)
题目导入.json多题自动导入配置(可选,放在 exe / 脚本同目录)
评测记录.json评测记录持久化文件(运行时自动生成)