ESOJ

  1. ESOJ全称为Efficient Informatics Online Evaluation System Online Judge (高效信息学在线评测网站)简写为 EJ,于 2023 年建立。Esoj 致力于为用户提供安全、完善、开放的在线评测和题目交流等服务。Esoj 拥有一套官方题库和与之相关的配套服务,当您直接访问 Esoj 时即为访问官方题库。Esoj 还提供在线评测托管功能(Online Judge As A Service),被称作为域(Domain),用户可在 Esoj 上快速建立起自己的在线评测系统,拥有独立的访问地址、独立的题库和相关的配套服务。

Esoj 由非营利性组织 Esoj Foundation 管理和运营。

  1. 1. 欢迎使用 Esoj

注册 Esoj 帐户和/或使用 Esoj 提供的服务(包括网页提供的在线服务和题目评测的非在线服务等),即表示您已同意本条款。请您务必审慎阅读,充分理解条款各项内容。

2. 使用服务

您必须遵守各项服务中提供的所有政策。

请勿滥用我们的服务。如,请勿干扰我们的服务,或尝试使用除我们提供的界面和指示以外的方法访问这些服务,或使用我们服务中出现的缺陷干扰其他网站或设施的正常运行。您仅能在法律允许的范围内使用我们的服务。

您在使用我们服务时须遵守我们服务器所在地的法律法规,不得利用我们服务从事违法违规行为,包括但不限于:

  • 发布、传送、传播、储存危害国家安全统一、破坏社会稳定、违反公序良俗、侮辱、诽谤、淫秽、暴力以及任何违反国家法律法规的内容;
  • 发布、传送、传播、储存侵害他人知识产权、商业秘密等合法权利的内容;
  • 恶意虚构事实、隐瞒真相以误导、欺骗他人;
  • 发布、传送、传播广告信息及垃圾信息;
  • 其他法律法规禁止的行为。

如果您违反了约定,相关国家相关机关或机构可能会对您提起诉讼、进行行政处罚或采取其他制裁措施,Esoj 将给于协助。造成损害的,您应依法予以赔偿,Esoj 不承担任何责任。

如果 Esoj 发现或收到他人举报您发布的信息违反约定,Esoj 有权进行独立判断并采取技术手段予以删除、屏蔽或断开链接。同时,Esoj 有权视用户的行为性质,采取包括但不限于暂停或终止服务,限制、冻结或终止账户使用,追究法律责任等措施。

3. 版权

使用我们的服务并不代表您拥有我们的服务或您所访问的内容的任何知识产权。网站上的所有材料(包括但不限于题目内容、用户界面、Wiki)版权均受保护,归 Esoj 所有。除非另有说明,本网站上的材料和服务仅用于个人和非商业用途,未经 Esoj 书面许可,不得复制、修改、创建衍生作品、传播、出版、公开演示、公开展示和分发从本网站获得的任何信息、文件、产品或服务。

4. 您在我们服务中发布的内容

我们的某些服务允许您提交内容。您保留对该内容持有的任何知识产权的所有权。

当您上传内容或通过其他方式向我们的服务(包括自定义的域内)提交内容时,您授予 Esoj 使用、持有、存储、复制、修改、创建衍生作品、传播、出版、公开演示、公开展示和分发此内容等权利。您在此许可中授予的权限,仅能用于运营、宣传和改进我们的服务,以及开发新的服务。该项许可在您停止使用我们的服务后依然有效。某些服务可能会向您提供一些方法,用于访问和删除您提供给该服务的内容。对于您提交至我们服务的任何内容,请确保您拥有向我们授予此许可的必要权利。我们有权在未通知您的情况下删除我们认为侵犯了知识产权或违反了相关法律法规的内容。

5. 对于发布题目的附加条款

您可以在 Esoj 上创建新题目。您上传到 Esoj 的题目,除了适用于本协议第四条(即“您在我们服务中发布的内容”)条款,还包含以下附加条款(若有冲突的条款,以附加条款中的优先):

  • 您上传到 Esoj 上的题目版权为 Esoj 和您共同拥有,我们会在相关页面或在对其进行分发、传播等操作时标明版权所有者。
  • 您不得滥用 Esoj 的发布题目功能,包括但不限于发布大量无意义题目、为题目的测试数据拟定非常不合理的资源占用量等。我们有权在这种情况下拒绝为您提供服务或清除相关数据。
  • Esoj 尊重他人知识产权和合法权益,请您在上传题目前确保拥有题目内容(包括但不限于题目描述、数据、图片等)的著作权及信息网络传播权或者已经取得上述全部权利人的许可并不存在任何著作权纠纷。我们有权在不通知的情况下删除被认为侵权的题目。
  • 您可以申请将自己上传的优质题目合并到官方题库。在这种情况下,Esoj 的管理员会对您创建的题目的内容(包括但不限于评测数据等对用户不可见的信息)进行人工审核和适当修改以确认其符合国家基本法律法规。
  • 我们会维护服务的稳定,并对数据(包括您发布的题目)进行定期的备份,并尽量在关闭服务前通知您,但我们不对任何题目提供永久存储或保留的承诺,出于安全的考虑推荐您另行备份题目内容。

6. 对于讨论、评论、题解的附加条款

您可以在 Esoj 上创建讨论、创建评论(含讨论的评论、比赛的评论等)或题解,或回复评论或题解。您在进行这些操作时须遵守本协议第二条(即“使用服务”)和以下规定,否则我们有权修改或删除相关内容:

  • 不得混淆讨论和题解,包括但不限于将题解发布到讨论中。
  • 不得发布会干扰 Esoj 用户界面呈现的内容。
  • 不得发布包含恶意代码、指向恶意网站或 Esoj 明确禁止的网站的链接的内容。
  • 发布含有代码的内容时,应当将代码放置于代码区块中。
  • 不得发布可读性差(例如,对于复杂算法无详细注释)的题解代码。

7. 对于域的附加条款

您可以在 Esoj 上创建和访问自定义域。在创建域或在自定义域中进行操作时,除了适用于本协议第四条(即“您在我们服务中发布的内容”)条款,还包含以下附加条款(若有冲突的条款,以附加条款中的优先):

  • 您不得使用误导性或抢占性质的域标识符或域名称,包括但不限于冒充为某组织。我们有权在不通知的情况下删除此类域和域下内容,且不提供数据恢复。
  • 您在域下发布的内容除了受 Esoj 管理外,还受域管理员管辖。具有管辖权限的实体有权对您发布的任何内容进行不加通知的修改或删除。对于此类内容删除,我们不提供数据恢复服务。
  • 即使域禁止访客访问,我们也能查看和管理您在域下发布的内容。我们有权依据本条款对域下内容进行管理。

8. 隐私保护

Esoj 隐私声明介绍了您在使用我们的服务时,我们会如何处理您的个人数据和保护您的隐私。使用我们的服务即表示您同意 Esoj 可以按照我们的隐私权政策使用您的个人数据。

9. 服务保证

我们对服务内容、服务的具体功能,或其可靠性、可用性或满足您需要的能力不作任何承诺。我们的服务是按照现有技术和条件所能达到的现状提供的。我们会尽最大努力向您提供服务,确保服务的连贯性和安全性。但我们不能随时预见和防范法律、技术以及其他风险,包括但不限于不可抗力、病毒、木马、黑客攻击、系统不稳定、第三方服务瑕疵、政府行为等原因可能导致的服务中断、数据丢失以及其他的损失和风险。

另外,我们始终在不断更改和改进我们的服务。我们可能会增加或删除功能,也可能暂停或彻底停止某项服务。若服务彻底停止,我们不承诺提供服务数据备份。

10. 关于本条款

我们可以修改上述条款或任何适用于某项服务的附加条款,您应当定期查阅本条款。所有修改的适用不具有追溯力,且会在公布十四天或更长时间后方始生效。但是,对服务新功能的特别修改或由于法律原因所作的修改将立即生效。如果您不同意服务的修改条款,应停止使用服务。


帮助

每个用户可以创建自己的域。比如,老师可以为课程创建一个域,然后把题目和学生加入到此域中。再如,可以把域作为团队功能。

通过合理的设置角色及其权限,可以把域设为公开或私有。

默认域为Esoj,用户直接访问Esoj域名就会访问此域,点击Esoj会从任意域跳转回Esoj域。

每个域的题库、讨论、训练以及比赛是独立且自治的。

编译器版本及参数

Esoj 使用 Esoj 进行评测,编译参数如下:

  • Bash(bash)
    /bin/bash foo.sh
    
  • C(c)
    /usr/bin/gcc -x c foo.c -o foo -lm -fno-stack-limit -fdiagnostics-color=always -std=c11 -O2
    
  • C99(c.c99)
    /usr/bin/gcc -x c foo.c -o foo -lm -fno-stack-limit -fdiagnostics-color=always -std=c99 -O2
    
  • C11(c.c11)
    /usr/bin/gcc -x c foo.c -o foo -lm -fno-stack-limit -fdiagnostics-color=always -std=c11 -O2
    
  • C++(cc)
    /usr/bin/g++ -x c++ foo.cc -o foo -lm -fno-stack-limit -fdiagnostics-color=always -std=c++14 -O2 -I/include
    
  • C++98(cc.cc98)
    /usr/bin/g++ -x c++ foo.cc -o foo -lm -fno-stack-limit -fdiagnostics-color=always -std=c++98 -I/include
    
  • C++03(cc.cc03)
    /usr/bin/g++ -x c++ foo.cc -o foo -lm -fno-stack-limit -fdiagnostics-color=always -std=c++03 -I/include
    
  • C++11(cc.cc11)
    /usr/bin/g++ -x c++ foo.cc -o foo -lm -fno-stack-limit -fdiagnostics-color=always -std=c++11 -I/include
    
  • C++14(cc.cc14)
    /usr/bin/g++ -x c++ foo.cc -o foo -lm -fno-stack-limit -fdiagnostics-color=always -std=c++14 -I/include
    
  • C++17(cc.cc17)
    /usr/bin/g++ -x c++ foo.cc -o foo -lm -fno-stack-limit -fdiagnostics-color=always -std=c++17 -I/include
    
  • C++20(cc.cc2a)
    /usr/bin/g++ -x c++ foo.cc -o foo -lm -fno-stack-limit -fdiagnostics-color=always -std=c++2a -I/include
    
  • C++98(O2)(cc.cc98o2)
    /usr/bin/g++ -x c++ foo.cc -o foo -lm -fno-stack-limit -fdiagnostics-color=always -std=c++98 -O2 -I/include
    
  • C++03(O2)(cc.cc03o2)
    /usr/bin/g++ -x c++ foo.cc -o foo -lm -fno-stack-limit -fdiagnostics-color=always -std=c++03 -O2 -I/include
    
  • C++11(O2)(cc.cc11o2)
    /usr/bin/g++ -x c++ foo.cc -o foo -lm -fno-stack-limit -fdiagnostics-color=always -std=c++11 -O2 -I/include
    
  • C++14(O2)(cc.cc14o2)
    /usr/bin/g++ -x c++ foo.cc -o foo -lm -fno-stack-limit -fdiagnostics-color=always -std=c++14 -O2 -I/include
    
  • C++17(O2)(cc.cc17o2)
    /usr/bin/g++ -x c++ foo.cc -o foo -lm -fno-stack-limit -fdiagnostics-color=always -std=c++17 -O2 -I/include
    
  • C++20(O2)(cc.cc2ao2)
    /usr/bin/g++ -x c++ foo.cc -o foo -lm -fno-stack-limit -fdiagnostics-color=always -std=c++2a -O2 -I/include
    
  • Mono C#(cs)
    /usr/bin/mcs -optimize+ -out:/w/foo /w/foo.cs
    
  • SQL(sql)
    /bin/bash -c "cp /dev/stdin init.sql && sqlite3 db.out <init.sql >/dev/null && sqlite3 db.out <foo.sql"
    
  • Go(go)
    /usr/bin/go build -p 1 -o foo foo.go
    
  • Haskell(hs)
    /usr/bin/ghc -O -outputdir /tmp -o foo foo.hs
    
  • Java(java)
    /usr/bin/bash -c "javac -d /w -encoding utf8 ./Main.java && jar cvf Main.jar *.class >/dev/null"
    
  • Julia(jl)
    /usr/bin/julia /w/foo.jl
    
  • Kotlin(kt)
    echo "Invalid language selection"
    
  • Kotlin/JVM(kt.jvm)
    kotlinc -include-runtime -d foo.jar foo.kt
    
  • Node.js(nodejs)
    /usr/local/bin/esbuild foo.js --log-level=warning  --color=true --platform=node --sourcemap=inline --outfile=code
    
  • Node.js-CJS(nodejs.cjs)
    /usr/local/bin/esbuild foo.js --log-level=warning  --color=true --platform=node --sourcemap=inline --outfile=code
    
  • Node.js-ESM(nodejs.mjs)
    /usr/local/bin/esbuild foo.mjs --log-level=warning  --color=true --platform=node --format=esm --sourcemap=inline --outfile=code
    
  • Pascal(pas)
    /usr/bin/fpc -O2 -o/w/foo foo.pas
    
  • PHP(php)
    /usr/bin/php foo.php
    
  • Python(py)
    /usr/bin/python3 -c "import py_compile; py_compile.compile('/w/foo.py', '/w/foo', doraise=True)"
    
  • Python2(py.py2)
    /usr/bin/python2 -c "import py_compile; py_compile.compile('/w/foo.py', '/w/foo', doraise=True)"
    
  • Python3(py.py3)
    /usr/bin/python3 -c "import py_compile; py_compile.compile('/w/foo.py', '/w/foo', doraise=True)"
    
  • PyPy3(py.pypy3)
    /bin/bash -c "/usr/bin/pypy3 -c \"import py_compile; py_compile.compile('/w/foo.py', '/w/foo', doraise=True)\" && mv foo.py foo"
    
  • Ruby(rb)
    /usr/bin/ruby foo.rb
    
  • Verilog(v)
    /usr/bin/iverilog foo.v -o foo
    
  • Rust(rs)
    /usr/bin/rustc -O -o /w/foo /w/foo.rs
    

限制

Esoj 评测机使用进程的CPU时间计算时间消耗,时间的限定为题目中评测点所指定的时间。

Esoj 评测机使用进程虚拟内存与物理内存总和计算内存空间消耗。内存空间默认限定为256MiB,题目中特别指明的,限定为题目中评测点所指定的内存空间。

输入输出

Esoj 支持且仅支持标准输入输出(控制台输入输出,屏幕输入输出,STD I/O),不支持文件输入输出。

评测状态

  • Waiting 评测:评测请求正在等待被评测机抓取
  • Fetched 评测:评测请求已被评测机抓取,正在准备开始评测
  • Compiling 评测:正在编译中
  • Judging 评测:编译成功,正在评测中
  • Accepted 通过:程序输出完全正确
  • Wrong Answer 不通过:程序输出与标准答案不一致(不包括行末空格以及文件末空行)
  • Time Limit Exceeded 不通过:程序运行时间超过了题目限制
  • Memory Limit Exceeded 不通过:程序运行内存空间超过了题目限制
  • Runtime Error 不通过:程序运行时错误(如数组越界、被零除、运算溢出、栈溢出、无效指针等)
  • Compile Error 不通过:编译失败
  • System Error 错误:系统错误(如果您遇到此问题,请及时在讨论区进行反馈)
  • Canceled 其他:评测被取消
  • Unknown Error 其他:未知错误
  • Ignored 其他:被忽略

有“成绩取消”字样则说明管理员手动标记此记录为取消,可能违反了服务条款,比如代码被发现与其他用户的代码十分相似。

编译错误

可能有以下情况:

    1. 递交时选错了编程语言
    1. Java 的主类名没有使用 "Main"
    1. 对于 C/C++:见下
    1. 一般性的编译错误

对 C/C++ 选手的特别提醒:

    1. __int64 在 GNU C++ 中应写成 long long 类型
    1. main() 返回值必须定义为 int ,而不是 void
    1. for 语句中的指标变量 i 将会在如"for (int i = 0...) {...}"语句之后变为无效
    1. itoa 不是一个通用 ANSI 函数(标准 C/C++ 中无此函数)
    1. printf 中使用 %lf 格式是不正确的

训练

我们精心挑选了一些题目组成了训练计划。单击导航栏的“训练”即可进入!

比赛

按照赛制不同,有不同的递交、排名规则。

OI 赛制所有题目均以最后一次递交为准,特别地,请避免编译错误。

OI 赛制排名规则为:总分高的排在前面,总分相等则排名相同。

ACM/ICPC 赛制所有题目递交后立即评测,以是否通过为准。

ACM/ICPC 赛制排名规则为:通过题目数多的排在前面,通过题目数相同的做题耗时(含罚时)少的排在前。

乐多 赛制下,选手可以多次提交一道题目,并获得实时评测结果。

乐多 赛制下,多次提交会导致选手的得分被扣除,排行榜将显示用户的最高得分。

乐多 赛制下,每道题的最终得分为:ss×maxmax(0.90.955nn0.70.7) 。ss,nn分别代表本次得分和本次提交前的尝试次数。

乐多 排名规则为:按照如上规则折算后的分数从高到低排名。

IOI(严格) 赛制下,不同于IOI赛制,排行榜将被关闭至比赛结束。

IOI(严格) 赛制下,每道题的排行榜得分将为用户每个子任务在所有提交中的最大得分的和。

时间与空间限制以题目说明为准,默认限制参见限制

通过率

通过率的影响极其恶劣,HydroOJ 不提供也不承认通过率。

RP 算法

RP 可由题目,活动,比赛等获得。

难度算法

HydroOJ 中题目的难度,根据递交数、通过率以及每个递交的递交时间和评测结果,通过算法计算得出。

因此,请注意以下几点:

    1. 一般地,难度的数值越大,该题目越难。
    1. 新题目的难度可能不准确;在题目获得大量递交之后,难度才会变得较为准确。
    1. 越早递交评测的用户代码的评测结果对题目难度影响越大。
    1. 题目的难度由算法计算得出,有可能出现不准确的结果。

测试数据集格式

详见配置文档

忘记密码和/或用户名

如果您无法登录,请仔细想想,是不是用户名记错了。比如,自己原本想要注册的用户名已经被注册,所以使用了一个带有前和/或后缀的用户名。

如果您确信您的账号被盗或者忘记了账号和/或密码,请及时重置密码或找回用户名

Markdown

Hydro 的 Markdown 区域使用 CommonMark 语法,并扩展了以下功能:

  • 基于 Katex 语法的数学公式支持。
  • 使用 @[](/user/uid) 提及用户。
  • 使用 ==text== 高亮文本。
  • 使用 ![alt](url =100x100) 设置嵌入图片的大小。
  • 使用 @[video](https://.../a.mp4) 嵌入视频文件。
  • 使用 @[bilibili](BVxxx) 嵌入站外视频。
  • 使用 @[pdf](https://.../a.pdf) 嵌入 PDF 文件。
  • 在题目/比赛/作业/训练中,可使用 file://文件名 的链接格式引用对应的附件。(推荐)
  • 支持使用一部分 HTML 标签。

Powered by Hydro and Eioes

感谢Hydro提供的技术支持!

© 2021-2023 Hydro.ac Worker 0 in 138msHydro v4.9.27 Professional