Universal Cup

UCup

比赛信息

比赛信息

  • 每场比赛都将在一周的周末举办。
  • 每场比赛的长度均为 5 小时。
  • 比赛的规则为传统的 ICPC 赛制。
  • 每场比赛将会包含若干道问题,通常为 10 至 13 道。
  • 在比赛开始后 4 小时将会封榜。在 4 小时后的提交将在排行榜上显示为 Pending。
  • 比赛将按照通过数为第一关键字降序,罚时为第二关键字升序来排名。
  • 一道题目的罚时为通过此题的时间(分钟数)。任何一次错误的提交(不含编译错误)将使得该题罚时增加 20 分钟。
  • 队伍的总罚时为所有通过题目的罚时之和。

比赛时间窗口

  • 为了方便来自不同时区的队伍,我们设置了个时间窗口。参加比赛的队伍可以自由选择六个窗口中的任意一个参加:
    • 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 试题,没有任何子任务或部分分。
  • 在队伍报名阶段完成后,我们将会举办一场测试赛供大家熟悉比赛系统环境。
  • 大多数题目可以分为以下三类
    • 传统题:最常见的试题类型。你需要从标准输入中读取输入数据,并将答案输出到标准输出之中。
      • 测试赛的试题 A 即为一道传统题的例子。
    • 交互题:程序的输入并不会事先给定。你需要与交互库通过 I/O 进行交互。
      • 测试赛的试题 B 即为一道交互题的例子。
    • 通信题:You solution might run multiple times during the evaluation.
      • 测试赛的试题 C 即为一道通信题的例子。
  • 对于你的每次提交,评测系统将给出该提交的评测结果,包括:
    • AC: Your solution is accepted! It means you successfully solved this problem.
    • WA: The output of your solution is wrong.
    • TL: Your solution exceeds the time limit, which means it has run for longer time than permitted.
    • ML: Your solution exceeds the memory limit, which means it has consumed more memory than permitted.
    • RE: There was an error during the execution of your program, like division by zero, incorrectly addressing memory or reading or writing to files.
    • Compile Error: Your solution could not be compiled successfully.
    • Judgement Failed: There's something wrong in this problem. Please contact the administrator!

技术信息

  • 比赛所用的平台为 QOJ,一个基于开源项目 Universal Online Judge 进行二次开发的评测系统.
  • 评测机使用的 CPU 为 Intel(R) Xeon(R) Platinum 8370C CPU @ 2.80GHz.
  • 比赛可以使用的编程语言包括 C,C++,Python 3 以及 Java.
  • 对于 C 与 C++ 语言,评测时使用的编译器版本为 GCC 11.1.0,并开启 -O2 优化。你可以自由选择编译时使用的语言版本,包括 C++98, C++11, C++14, C++17C++20.
  • python3 的版本为 Python 3.10.9
  • Java 的版本为 OpenJDK 11.0.16
  • 选手提交代码的大小上限为 256 KiB。

比赛规则

提问与公告

  • 在比赛期间,裁判可能会通过系统中的 Clarifications 发送公告,公告的内容可能包含对试题内容的解释、修改或其他重要信息。选手应当定期查看公告内容,因遗漏公告信息而造成的影响不能作为申诉的理由。
  • 在比赛期间,若选手对比赛存在问题,选手应当使用系统中的提问功能进行提问,不推荐采用其他通讯方式进行提问。

参赛要求

作为线上的非盈利比赛,我们无法设计额外的监考手段,因此在参赛机器数、预先编写代码等要求上不做额外的限制。但选手需要遵守如下原则:

  • 在参赛期间,选手不应与除团队成员以外的任何人进行交流,也不应将自己队伍的解题资料(包括但不限于解题思路、解题代码或其他辅助程序)分发至网络。
  • 在参赛期间,选手不应提交恶意代码,包括但不限于对评测机的攻击,以及恶意占用评测系统资源。
  • 每一轮比赛使用的题目可能来自此前已举行过的比赛。如果参赛的队伍中有任何一人参加过该比赛,则该名队员不应继续参加这场比赛。
  • 若参加该比赛的队伍与在 Universal Cup 中的队伍组成相同,则该队伍的成绩将被替换为其在原比赛中的成绩。
  • 在比赛时,每位队员可以同时使用自己的电脑,但在同一时刻只允许使用一台电脑来编写代码。

若选手违反上述原则,或做出了其他裁判组认为干扰了比赛正常运行的行为,则选手可能被处以警告、被移除比赛或禁止参加该赛季比赛的处罚。规则的解释权和执行权归 Universal Cup 组委会所有。

申诉

若选手对比赛过程中裁判的处理方式、比赛的试题或比赛的结果有异议,请于比赛结束后 48 小时内向 [email protected] 发送邮件说明问题。超出该时间的申诉视为无效。

Rating

请注意:现在的 Rating 系统仍在实验当中,在未来可能会有所改动。

Grand Prix 30 系统

在每场比赛中,所有进入前 30 名的队伍将会根据下表获得 GP30 点数:

排名点数排名点数排名点数
110011242110
2751222229
3601320238
4501418247
5451516256
6401615265
7361714274
8321813283
9291912292
10262011301

比赛 Rating

在每场比赛结束后,将会计算所有有效参赛队伍的 Rating。每支队伍的 Rating 计算方式为:

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

其中各参数的含义如下:

  • $R$ :最终该队的 Rating,为一个在 $[0, 200]$ 内的实数。
  • $Solved$ :该队伍实际解决的问题数。
  • $maxSolved$ :解题数最多的队伍所解决的问题数。
  • $n_{\mathrm{teams}}$ :解决了至少一道题目的队伍数。没有解决任何题目的队伍不被计算在内。
  • $rank$ :该队伍的最终排名。
  • $\mathrm{GP30}$ : 该队伍的 GP30 点数。如果该队伍没有进入前 30,则此项点数为 0。

赛季 Rating

一个队伍在赛季中的 Rating 将按照其在每场比赛中的 Rating 计算而来。具体地,设一个队伍在赛季中所有的比赛得到的 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}$ ,则其最终 Rating 为:

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

第二届 Universal Cup 中,参数 $k$ 将被取为 $\displaystyle\frac{1}{4}$。

其他情形

当出现以下情形时,队伍可向组委会申请添加其在对应比赛的 Rating:

  • 当一个队伍在现场参加了一轮比赛后,将按照其现场的成绩计算 Rating。
  • 当一个队伍为一轮比赛的命题者、验题者时,将获得所有通过了至少一道题的队伍所得 Rating 的平均数作为其 Rating。