Judge 系统运行于Ubuntu 20.04 对应的编译器和编译选项如下:
语言 | 编译器版本 | 编译选项 |
---|---|---|
C | gcc 11.1.0 | gcc Main.c -o Main -fno-asm -O2 -Wall -lm --static -std=c11 -DONLINE_JUDGE |
C++ | g++ 11.1.0 | g++ Main.cc -o Main -fno-asm -O2 -Wall -lm --static -std=c++11 -DONLINE_JUDGE |
Pascal | Free Pascal 3.0.4 | fpc Main.pas -oMain -O1 -Co -Cr -Ct -Ci |
Java | openjdk 11.0.11 | 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.18 | |
Python3 | 3.9.7 | |
PHP | 8.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。
目前HZNUOJ有四种类型的比赛:
HZNUOJ所有类型的比赛均为ACM/ICPC赛制。
每场比赛设有若干道题目,比赛开始后,参赛者需在时限内去解决这些题目。
每场比赛都设有实时榜单,榜单排名规则也与ACM/ICPC相同。
每题耗时:Accepted的那一刻距离比赛开始的时间。
总罚时:所有AC了的题的(耗时+错误次数*20min)的和。
排名时,AC题数优先,题数相同时按罚时排序。
有些比较正式的比赛设有封榜机制,即比赛最后一段时间内的提交结果将隐藏(除了自己都不可见),榜单也会停止更新,新的提交会显示为灰色,留作最后滚榜用。
滚榜是ACM/ICPC系列比赛中一个十分具有特色的机制。
在正规ACM/ICPC系列比赛中,比赛最后一个小时的提交结果是隐藏的,只有选手本人能看到,在榜单上会显示成代表未知的灰色,以增加比赛紧张气氛。
然后在颁奖会上,将从榜单最后一名开始,一个个揭晓灰色的未知提交,一旦揭晓的结果为通过,这个人的排名就会上升,否则这个人的排名确定,开始揭晓下一个人,以此类推。这样一来,可以从后往前一个个确定最终排名,一旦名次达到获奖名次内,可以直接进行颁奖。整个过程惊险刺激,是整个比赛的亮点所在。
HZNUOJ的所有题目均在ProblemSet 中,每个题目都有一个唯一的数字编号,称为Problem ID。
每当你AC了一道题,你就有权限查看这题所有的提交代码,借鉴参考大神们的写法,从而更上一层楼。
比赛的所有题目,都是从ProblemSet中选出来的,是它的子集。
当一道题被选入某个非practice模式的比赛中之后,为公平起见,它会在ProblemSet中被隐藏掉,在比赛结束后恢复。
一般如果题目突然不见了,可能就是这个原因,当然也有可能是因为其他原因而被管理员手动隐藏了。
当然,一般比赛的题都是新出的,比赛结束后才第一次在ProblemSet中露面。
选入比赛中的题目,在比赛界面中,会隐藏掉原来的Problem ID,取而代之的是A, B, C...的代号。在比赛结束后,会在标题旁边显示真正的Problem ID,可以点击前往ProblemSet补题。
HZNUOJ的ProblemSet中设有一个榜单,积分和等级的计算规则如下。
等级由实力(Strength)决定,当实力达到一定值后自然会升级,而实力又从刷题中来,每道题后面均标有分数(Scores),代表AC这道题之后能提升多少实力。一般来说,越少人做的题目,分数越高,一起刷题的人越多,每道题的分数也越高。需要说明的是,用户的实力值是会根据大环境动态变化的(其实是因为分数在动态变化),如果你AC的题目被更多人AC出来了,你的实力值会下降,另外一方面,OJ内有更多强者涌入的时候,你的实力值也会提升。所以,想要快速升级,那就多刷题,刷难题!
等级划分与小说《斗破苍穹》一致,自低向高分别为斗之气、斗者、斗师、大斗师、斗灵、斗王、斗皇、斗宗、斗尊、斗圣、斗帝,除斗帝外,每一阶又分不同等级,阶数越高,升级越困难。除此之外,每一阶还有不同的代表颜色,该阶等级越高,颜色越深。