HZNUOJ

HZNU Online Judge FAQ


Content

环境参数

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有四种类型的比赛:

  • practice,练习赛,只是简单的把题目归个类做做练习,相应题目不会从problemset中隐藏,且通过后可以立即进入题目的status里查看别人的代码。
  • public,公开的比赛,任何人均可进入参加。
  • password,设有密码保护的比赛,只有输入正确密码才能进入。
  • special,特殊比赛,只有使用专门发放的账号才能进入。

比赛赛制

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

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

每场比赛都设有实时榜单,榜单排名规则也与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内有更多强者涌入的时候,你的实力值也会提升。所以,想要快速升级,那就多刷题,刷难题!

等级划分与小说《斗破苍穹》一致,自低向高分别为斗之气、斗者、斗师、大斗师、斗灵、斗王、斗皇、斗宗、斗尊、斗圣、斗帝,除斗帝外,每一阶又分不同等级,阶数越高,升级越困难。除此之外,每一阶还有不同的代表颜色,该阶等级越高,颜色越深。