系统运行于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相同。
每题耗时: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出来了,你的总积分会下降。