WWOJ

Online Judge FAQ


Content

环境参数

系统运行于Ubuntu 14.04 对应的编译器和编译选项如下:

语言 编译器版本 编译选项
C gcc 4.8.4 gcc Main.c -o Main -fno-asm -O2 -Wall -lm --static -std=c99 -DONLINE_JUDGE
C++ g++ 4.8.4 g++ Main.cc -o Main -fno-asm -O2 -Wall -lm --static -std=c++11 -DONLINE_JUDGE
Pascal Free Pascal 2.6.2 fpc Main.pas -oMain -O1 -Co -Cr -Ct -Ci
Java openjdk 1.7.0_79 javac -J-Xms32m -J-Xmx256m Main.java (Languages except C/C++ has 2 more seconds and 128M more memory when running and judging.)
Ruby 1.9.3
Bash 4.3.11
Python2 2.7.6
Python3 3.4.3
PHP 7.0
Perl perl 5 version 18
C# mono 3.2.8
Lua 5.2.3

例题示范

你的程序应该从标准输入 stdin('Standard Input')获取输出 并将结果输出到标准输出 stdout('Standard Output').例如,在C语言可以使用 scanf ,在C++可以使用cin 进行输入;在C使用printf ,在C++使用cout进行输出. 用户程序不允许直接读写文件, 如果这样做可能会判为运行时错误 "Runtime Error"。 详见1000题hint中各种语言的参考答案。

测评结果释义

评测结果 缩写 含义
Pending PD 您的提交正排队等待评测。
Pending Rejudge PR 因为数据更新或其他原因,系统将重新判你的答案。
Compiling CP 您提交的代码正在被编译。
Running & Judging RN 您的程序正在运行。
Judging JG 我们 正在检查您程序的输出是否正确。
Accepted AC 恭喜!您的程序通过了所有数据!
Presentation Error PE 您的程序输出有格式问题,请检查是否多了或者少了空格 (' ')、制表符('\t')或者换行符('\n')
Wrong Answer WA 您的程序输出结果错误。
Runtime Error RE 您的程序在运行时发生错误。
Time Limit Exceeded TLE 您的程序运行的时间已经超出了题目的时间限制。
Memory Limit Exceeded MLE 您的程序运行的内存已经超出了题目的内存限制。
Output Limit Exceeded OLE 您的程序输出内容太多,超过了这个题目的输出限制。(一般输出超过答案2倍时会触发,强制终止程序,防止恶意输出对硬盘造成压力)
Compile Error CE 您的程序语法出现问题,编译器无法编译。
System Error SE 评判系统内部出现错误 ,我们会尽快处理。
Out Of Contest Time OCT 考试已经结束,不再评测提交。

常见编译问题

有的时候你的程序在本地能编译通过,但提交OJ后却显示编译错误。

这多见于C/C++,一般是因为你本地用的是VS,VS的编译器是MS-VC++,而OJ用的是G++,这两个编译器的标准略有不同,G++更符合标准,下面列出一些常见的导致CE原因:

  • main 函数必须返回int, void main() 的函数声明会报编译错误。
  • itoa 不是ansi标准函数.
  • __int64 不是ANSI标准定义,只能在VC使用, 但是可以使用long long声明64位整数。

如果你使用JAVA语言,请注意类名一定要是Main, 否则也会返回CE。

比赛相关

比赛赛制

OJ所有类型的比赛均为ACM/ICPC赛制。

每场比赛设有若干道题目,比赛开始后,参赛者需在时限内去解决这些题目。

每场比赛都设有实时榜单,榜单排名规则也与ACM/ICPC相同。

ACM/ICPC排名规则

每题耗时:Accepted的那一刻距离比赛开始的时间。

总罚时:所有AC了的题的(耗时+错误次数*20min)的和。

排名时,AC题数优先,题数相同时按罚时排序。 

有些比较正式的比赛设有封榜机制,即比赛最后一段时间内的提交结果将隐藏(除了自己都不可见),榜单也会停止更新,新的提交会显示为灰色,留作最后滚榜用。

题目相关

OJ的所有题目均在ProblemSet 中,每个题目都有一个唯一的数字编号,称为Problem ID。

每当你AC了一道题,你就有权限查看这题所有的提交代码,借鉴参考大神们的写法,从而更上一层楼。

比赛的所有题目,都是从ProblemSet中选出来的,是它的子集。

当一道题被选入某个非practice模式的比赛中之后,为公平起见,它会在ProblemSet中被隐藏掉,在比赛结束后恢复。

一般如果题目突然不见了,可能就是这个原因,当然也有可能是因为其他原因而被管理员手动隐藏了。

当然,一般比赛的题都是新出的,比赛结束后才第一次在ProblemSet中露面。

选入比赛中的题目,在比赛界面中,会隐藏掉原来的Problem ID,取而代之的是A, B, C...的代号。在比赛结束后,会在标题旁边显示真正的Problem ID,可以点击前往ProblemSet补题。

积分规则

一个积分系统为Hard_level,这个系统决定一个用户能看到的题目,题目有难度分类,只有等级达到对应等级,才能看到这个类型的题目,当然如果在比赛中或者其他特殊情况下是跟这个限制无关的,并且提交过的题目无所谓难度都可以看到,即一个用户在比赛中提交过难度等级超过他的题目,那么在比赛结束后他依旧可以在题库中看到这道题。

另外在ranklist中设有一个榜单,积分和等级的计算规则如下。 等级由积分(Strength)决定,当积分达到一定值后自然会升级,而积分又从刷题中来,每道题后面均标有分数(Scores),代表AC这道题之后能获得多少积分。一般来说,越少人做的题目,得分越高;越多人做的题目,每道题的得分也越就越低。 需要说明的是,用户的积分是会根据大环境动态变化的(其实是因为分数在动态变化),如果你AC的题目被更多人AC出来了,你的总积分会下降。