帮助

班级

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

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

默认班级为 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 Loose IOI Strict IOI 乐多 ACM/ICPC MON
比赛中有无罚时 无 无 无 按提交次数衰减 20min/次 无
查看自己提交记录 比赛结束后 比赛中即可 比赛中即可 比赛中即可 比赛中即可 比赛结束后
查看实时成绩表 比赛结束后 比赛开始后 比赛结束后 比赛结束后 封榜前公开,封榜后隐藏 比赛结束后
查看具体测试点详情 比赛结束后 比赛中 比赛中 比赛中 比赛中 比赛结束后
计分方式 最后一次提交 最后一次提交 最高分提交 最高折算分提交 AC 数 + 罚时 最后一次提交
排名方式 总分降序+同分并列 同 OI 风格 同 OI 风格 折算总分降序+最后提分时间升序 AC 数降序+罚时升序 同 OI 风格
成绩表展示 每题得分+耗时 同 OI 风格 同 OI 风格 折算分/原始分 AC标记+罚时标记 同 OI 风格
封榜 无 无 无 无 默认 1h 无

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

通过率

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. 悬赏他人帮你解决问题:开发中......有时当你代码实在调不出来,或者学习遇到一些阻碍,可以去问别人,别人没有义务花自己的时间,去解决你的问题,因此,问问题的人要支付一些金币,而最终能回答并解决你问题的人,则可以获得你的酬谢。
  • 5. 使用 AI 大模型:帮你调试代码和优化代码。

忘记密码和/或用户名

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

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

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