跳转至

竞赛信息

每场竞赛将在周末举行。

  • 每场竞赛时长为 5 小时。
  • 竞赛规则采用传统的 ICPC 规则。
  • 每场竞赛将包含若干问题,通常为 10 到 13 个。
  • 竞赛开始 4 小时后排行榜将冻结,4 小时后提交的结果将在排行榜上显示为待定。
  • 比赛将按照解决问题数量这一关键字降序排列,按照罚时这一关键字升序排列。
  • 一个问题的罚时是从竞赛开始到首次提交正确答案所经过的时间。任何错误提交(不包括编译错误)将给该问题的罚时增加20分钟。
  • 团队的总罚时是所有已解决问题罚时的总和。

竞赛窗口

  • 为方便来自不同时区的团队,我们设置了八个时间窗口。团队可自由选择其中七个窗口参加。
    • 周六 08:00(UTC+8) - 周六 13:00(UTC+8)
    • 周六 10:00(UTC+8) - 周六 15:00(UTC+8)
    • 周六 13:00(UTC+8) - 周六 18:00(UTC+8)
    • 周六 16:00(UTC+8) - 周六 21:00(UTC+8)
    • 周六 19:00(UTC+8) - 周六 24:00(UTC+8)
    • 周六 21:00(UTC+8) - 周日 02:00(UTC+8)
    • 周六 23:00(UTC+8) - 周日 04:00(UTC+8)
    • 周日 02:00(UTC+8) - 周日 07:00(UTC+8) 无论选择哪个时间窗口,竞赛时长始终为 5 小时。
  • 计分板将包含之前时间窗口中参赛团队的结果。
  • 如果所选竞赛窗口与重大事件(例如其他国际竞赛或节日)冲突,团队可申请额外的时间窗口。
  • 此类申请最好在最后一个官方竞赛窗口结束前提出。
    • 如果额外的时间窗口晚于最后一个官方窗口,将发布公告提醒所有参与者在延长的时间窗口结束后再在公共场所讨论问题。
  • 委员会将审查所有申请。请注意,额外的时间窗口存在问题泄露的风险,因此不可信的申请将被拒绝。
  • 提前参赛的风险:提前参赛的团队必须意识到竞赛材料可能更新。这些更新可能包括但不限于修订后的问题描述、说明、不完整的排行榜、调整后的时间限制、额外的测试用例和重新评判。 如需了解相关风险的更多细节,请参考规则的竞赛问题部分。

竞赛问题

  • 任务以传统的 ICPC 格式给出。不提供部分分数或子任务。
  • 大多数任务可分为三类:
    • 标准任务:最常见的任务类型。要求从标准输入读取输入,并将答案打印到标准输出。评委会使用一个检查器来评估答案。
    • 交互任务:提供给程序的输入可能不是预先确定的。它可能是专门为解决方案构建的,并根据程序的行为给出。评委会通过交互与程序进行交互。
    • 通信任务:解决方案在评估过程中可能会多次运行。
  • 提交可能会收到以下几种裁决结果:
    • AC:你的解决方案被接受!这意味着你成功解决了这个问题。
    • WA:你的解决方案输出错误。
    • TL:你的解决方案超过了时间限制,即运行时间超过了允许的时长。
    • ML:你的解决方案超过了内存限制,即消耗的内存超过了允许的量。
    • RE:程序执行过程中出现错误,如除以零、错误地访问内存或读写文件。
    • Compile Error:你的解决方案无法成功编译。
    • Judgement Failed:这个问题有问题。请联系管理员!
  • 在比赛期间,可能会出现测试用例不正确或不完整的情况。在这种情况下,所有失败的提交将被重新评判。
  • 除了非常特殊的情况(例如对评判系统的攻击、严重缺失或不正确的测试用例或输出验证器),一旦提交被接受,将不再重新评判。
  • 在第一个官方竞赛窗口开始之前,问题可能会被替换,或者测试数据可能会被添加、删除、修改或以其他方式改变,从而对比赛产生重大影响。 在这种情况下,所有参加额外时间窗口的团队的提交,包括那些之前被接受的提交,可能会被拒绝、重新评判甚至删除。因此,我们建议团队仅在特殊情况下申请额外的时间窗口。

技术细节

比赛期间使用的平台是 QOJ,它是 Universal Online Judge 的一个修改版本。

  • 评判机器使用的 CPU 是 Intel(R) Xeon(R) Platinum 8370C CPU @ 2.80GHz
  • 支持的编程语言包括 C、C++、D、Python 3、Java 和 Rust。
  • 对于 C 和 C++ 语言,使用的编译器版本是 GCC 13.1.0,并启用了 -O2。你可以使用任何语言标准,包括 C++98C++11C++14C++17C++20C++23
  • D 的版本是 DMD64 D Compiler v2.108.0
  • Python3 的版本是 Python 3.12.3
  • Java 的版本是 OpenJDK 11.0.16
  • Rust 的版本是 rustc 1.72.1
  • 每次提交的大小不能超过 256 千字节。

竞赛规则

说明和公告

  • 在竞赛期间,评委可能通过竞赛系统中的说明发送公告,其中可能包含对问题内容的解释、修订或其他重要信息。
  • 参与者应定期查看公告内容,因遗漏公告信息造成的影响不能作为申诉的理由。
  • 在比赛期间,如果参赛者对问题有疑问,应在系统中提问。不建议使用其他通信方式提问。
  • 不能保证对说明的回复,因为作者可能在整个竞赛窗口期间都不可用。

竞赛规则

请注意,自第 20 阶段起,关于计算机数量的规则已更改。

  • 参赛者可以打印出问题陈述,或在比赛期间使用自己的计算机和电子设备阅读。
  • 在比赛期间,团队成员不允许同时使用自己的电子设备进行编码或使用其他解题应用程序。 这包括但不限于编写解决问题的代码、使用科学计算软件进行计算或运行自编程序进行扩展计算。
  • 参赛者在比赛期间禁止与团队外的任何人交流。严禁在互联网上分发任何解题材料,包括思路、代码或辅助程序。
  • 参赛者不应提交恶意代码,包括但不限于攻击评估机器和恶意占用评估系统资源。
  • 每轮使用的问题可能来自以前的竞赛。如果参赛团队中有任何一个团队参加过此类竞赛,该参赛者不应继续参加本轮竞赛。 如果参赛团队与 Universal Cup 中的团队组成相同,该团队的评级将被其在原始竞赛中的得分所取代。
  • 在比赛期间,每个团队成员可以同时使用自己的电脑,但同一时刻只允许使用一台电脑编写代码。
  • 如果参赛者违反上述原则,或从事裁判组认为干扰比赛正常运行的其他行为,参赛者可能会被警告、取消比赛资格或禁止参加本赛季比赛。

解释和执行规则的权利属于Universal Cup组委会。

申诉

如果参赛者对比赛期间裁判的处理有异议,请在比赛结束后48小时内发送电子邮件至 appeal@ucup.ac 解释问题。超过此时间的申诉将被视为无效。

Rating

注意:当前的评级系统仍处于试验阶段。未来可能会发生变化。

Grand Prix 30 System

在每轮比赛中,进入前30名的团队将根据下表获得GP30分数。

排名 分数 排名 分数 排名 分数
1 100 11 24 21 10
2 75 12 22 22 9
3 60 13 20 23 8
4 50 14 18 24 7
5 45 15 16 25 6
6 40 16 15 27 5
7 36 17 14 28 4
8 32 18 13 29 3
9 29 19 12 30 2
10 26 20 11 1

Rating in a Contest

在每轮比赛结束时,将计算所有有效团队的评级,每个团队的评级将按照以下公式计算:

\[ R = 100 \times \frac{Solved}{maxSolved} \times \frac{n_{\mathrm{teams}} - rank + 1}{n_{\mathrm{teams}}} + \mathrm{GP30} \]

这些参数的含义如下:

  • \(R\):团队的评级,它将是一个在 \([0, 200]\) 范围内的实数。
  • \(Solved\):团队解决的问题数量。
  • \(maxSolved\):最佳团队解决的问题数量。
  • \(n_{\mathrm{teams}}\):至少解决了一个问题的团队数量。未解决任何问题的团队不计算在内。
  • \(rank\):团队的排名。
  • \(\mathrm{GP30}\):团队的 GP30 分数。如果团队未进入前 30 名,分数为 0。

Season Rating

一个团队的赛季评级将根据其在每轮比赛中的评级计算。

具体来说,假设该团队在本赛季所有比赛中的评级按降序排列为 \(r_0, r_1, r_2, \cdots, r_{m-1} (r_0 \geq r_1 \geq r_2 \geq \cdots \geq r_{m-1})\),那么该团队的评级将为:

\[ R = k \sum_{i=0}^{m-1} (1-k)^{i} r_i \]

在 Universal Cup 的第三个赛季,\(k\) 的值将为 \(\frac{1}{5}\).。

External Rating

一个团队在以下情况下可向组委会申请添加其相应轮次的评级:

  • 当一个团队现场参加了一轮比赛时,评级将根据其现场比赛结果计算。
  • 当一个团队是一轮比赛的出题者或测试者时,它将获得所有至少解决了一个问题的团队的评级平均值作为其评级。