帮助

班级

每个用户都可以创建自己的班级。比如,老师可以为课程创建一个班级,然后把题目和学生加入到此班级中。

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

默认班级为 TopsCoding(主题库),用户直接访问 TopsCoding 班级名就会访问主题库,点击 TopsCoding Logo会从任意班级跳转回主题库。

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

每个人最多可以创建 2 个班级。

编译器版本及参数

TopsCoding服务器上当前仅安装了C,C++,Python的编译器,因此提交仅限于上面三种语言。所有支持的编译器的编译参数如下:

  • C
    gcc -O2 -Wall -std=c99 -o /out/foo /in/foo.c -lm
  • C++14
    g++ -O2 -Wall -std=c++14 -o /out/foo /in/foo.cc -lm
  • C++17
    g++ -O2 -Wall -std=c++17 -o /out/foo /in/foo.cc -lm
  • Python 3
    python3 foo.py

限制

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

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

我们在多个服务器上部署了多台评测机,由于各服务器环境可能存在不同(尤其是 gcc 版本不同),因此可能会发生同一份代码在多次提交时,评测结果不一致的情况:

  • 两次提交,一次超时,一次不超时:这往往是由于您的代码运行时间卡在超时的边界上,而评测机服务器的性能是存在波动的。发生这种情况属于正常现象,如果您觉得您的代码可以卡时间过去,可以联系管理员/老师对您的记录进行重测。
  • 两次提交,一次超时,一次报答案错误:对于 C++ 语言,这很可能是由于这两次提交是由不同gcc版本的评测机评测的,其 -O2/-O3 编译优化结果不同。发生这种情况时,往往您的代码中真的发生了死循环的情况,而编译优化将死循环优化掉了,检查您的代码即可。

输入输出

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

当题目说明(题目开头)要求使用文件操作时,请使用文件输入输出,此时使用标准输入输出会爆零(System Error/Wrong Answer)。

评测状态

  • Waiting 评测:评测请求正在等待被评测机抓取
  • Fetched 评测:评测请求已被评测机抓取,正在准备开始评测
  • Compiling 评测:正在编译中
  • Judging 评测:编译成功,正在评测中
  • Accepted 通过:程序输出完全正确
  • Wrong Answer 不通过:程序输出与标准答案不一致(不包括行末空格以及文件末空行)
  • Time Exceeded 不通过:程序运行时间超过了题目限制
  • Memory Exceeded 不通过:程序运行内存空间超过了题目限制
  • Runtime Error 不通过:程序运行时错误(如数组越界、被零除、运算溢出、栈溢出、无效指针等)
  • Compile Error 不通过:编译失败
  • System Error 错误:系统错误(如果您遇到此问题,请先检查是否是在题目要求使用文件操作的情况下,你没有使用文件操作并且,如果不是,请及时在讨论区进行反馈,或者联系管理员)
  • Canceled 其他:评测被取消
  • Unknown Error 其他:未知错误
  • Ignored 其他:被忽略
有“成绩取消”字样则说明管理员手动标记此记录为取消,可能违反了服务条款,比如代码被发现与其他用户的代码十分相似。

编译错误

可能有以下情况:

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

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

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

训练

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

比赛

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

OI 赛制:所有题目均以最后一次提交为准,比赛过程中无法看到个人成绩,比赛结束后开放查看所有人的得分和排名。

IOI 赛制:所有题目均以最后一次提交为准,比赛过程可以实时查看自己以及其他人的得分和排名。

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

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

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

MON 赛制:在比赛指定时间窗口参赛,答题时长为比赛规定的时长,不限制提交次数,判分和排名规则与 OI 赛制相同。

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

通过率

TopsCoding 使用完成数量、点赞数等指标来评价用户水平。通过率的影响极其恶劣,现在 TopsCoding 不提供也不承认通过率。

RP 算法

TopsCoding RP 分为固定 RP 与浮动 RP ,固定 RP 可由活动、比赛等的奖励获得,浮动 RP 由一般性通过题目获得。

浮动 RP 是一个动态的数值,每个用户在每道题上获得的 RP 都不一样,并且未来也不固定(即浮动之意)。

每道题的浮动 RP 由该题通过总人数与该用户通过此题的名次计算得来。

难度算法

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

因此,请注意以下几点:

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

测试数据集格式

可以把各测试点直接压缩为zip的数据包上传,评测机会自动检测文件配置,其他自定义配置规范具体可参见:HydroJudger测试数据包格式规范。

我的文件

可以上传图片、文本、测试数据集压缩包文件,其他类型文件不建议上传。

金币系统

为了鼓励和帮助同学们学习,减少学习过程中的障碍,增加学习的乐趣,我们设计了一种金币的获取和消费机制:

金币的获取方式有以下几种:

  • 1. 刷题:在(仅限)主题库中首次对一道题目提交代码通过即可获得金币,金币值基数为题目难度等级(1~10),奖励倍率为 1,首次提交即通过,倍率 +1,以挑战模式通过奖励倍率 +2,奖励可叠加(每道题目仅第一次 AC 时可获得金币),除此之外,每次还会随机额外掉落 0~1.00 的金币,有 1% 的概率掉落 5 金币;
  • 2. 比赛中获得好的成绩:开发中......;
  • 3. 完成一个主题库中的训练:开发中......;
  • 4. 帮助他人解决问题:开发中......。

金币可用于以下几种场景下消费:

  • 1. 换取题解:当一道题目实在做不出来时,在该题有题解的情况下,可用来换取该题的题解,需要花掉的金币数量为该题的难度等级(1~10)×10,(×10 意味着你每做对 10 道同等题目,就可以换取一道相应难度的题目的题解);
  • 2. 参加比赛:开发中......未来,我们会设计一种比赛机制,参加比赛需要支付一定的参赛费(比如至少 5 个金币),所有选手的参赛费构成奖金池,然后比赛后,根据选手表现,返还一定的金币(有的人赚,有的人亏),以此来提高比赛的刺激性;
  • 3. 参与训练:开发中......完成训练是有好处的,对于参加了训练但不不做题的人来说,他最好付出一些成本(押金),当他努力前行,最终完成训练后,他理应获得一些奖励(押金返还+额外金币);
  • 4. 悬赏他人帮你解决问题:开发中......有时当你代码实在调不出来,或者学习遇到一些阻碍,可以去问别人,别人没有义务花自己的时间,去解决你的问题,因此,问问题的人要支付一些金币,而最终能回答并解决你问题的人,则可以获得你的酬谢。

忘记密码和/或用户名

目前网站没有对外开放注册,如果你想使用本网站,请联系管理员。

如果您无法登录,请仔细想想,是不是用户名或密码记错了。

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