Summary

在 Sleeping Cup's Rating System 中,最近参加的比赛将占到较大比重(最近一场比赛将占到 50%50\%),因此 Sleeping Cup's Rating System 中的上分速度(以及下分速度)将明显快于一般的 Rating System。

此外,对于发挥严重失常(较上一场比赛 Performance 下降超过 100100 点)的参赛者,Sleeping Cup's Rating System 将启动保护机制,减缓其下分速度(但下分速度仍将快于一般的 Rating System)。

11 点 Sleeping Cup Rating 等同于 242 \sim 4 点 Coderorces / Atcoder Rating。

Rated or unrated?

在 Rated 比赛中,所有提交了代码的用户(除作弊者外)均为 Rated 对象。

Sleeping Cup 目前不支持 Unrated 参赛。

Performance

Performance 按以下方式生成:

  1. 去除原榜单中第一次参与 Rating 评定的参赛者,得到一个子榜单;
  2. 将存在于子榜单上的参赛者称为老参赛者,不存在于子榜单上的参赛者称为新参赛者;
  3. 将子榜单中所有参赛者的赛前 Quality 降序排序,得到序列 SS,并记它的第一项为 VV
  4. 将序列 SS 的第 ii 项作为 SS 值分配给子榜单上排名第 ii 名的老参赛者;
  5. 对原榜单上排名高于所有老参赛者的新参赛者,将 VV 作为 SS 值分配给他们;
  6. 对于其他新参赛者,找到名次位于他们之前(包括并列)的最靠后的老参赛者;
  7. 让这些新参赛者的 SS 值与他们找到的老参赛者保持一致;
  8. 为处于总榜单上第 ii 名的参赛者如下公式分配 TT 值(其中 nn 是总参赛人数):$$T_i=\left\lfloor(1-\dfrac{\ln i}{\ln (n+1)})(V+200)\right\rfloor $$
  9. 对于每位选手,将他(她)的 SS 值与 TT 值的平均值(向下取整)作为该选手的 Performance。

例如:

Rated 对象 赛前 Quality 排名 SS TT Performance
Zinc 354354 11 900900 11001100 10001000
Helium 900900 22 525525 550550 537537
Chlorine 525525

Rating

Rating 由各场比赛的 Performance 综合计算而成。Rating 的初始值为 00,但保证参赛后不为 00

Rating 值 RR 的具体计算方式如下:

  1. 将该账号参加的所有 Rated 比赛(因作弊而被清空的参赛记录不参与计算)的 Performance 按参赛时间从晚到早排序。设排序后每场比赛的 Performance 值依次为 W1,W2,,WnW_1,W_2,\ldots,W_nnn 为比赛场数);
  2. Xi=Wi100(i1)X_i=W_i-100(i-1)
  3. X1,X2,,XnX_1,X_2,\ldots,X_n 从大到小排序。设排序后的 nn 个数依次为 Y1,Y2,,YnY_1,Y_2,\ldots,Y_n
  4. Zi=Yi+100(i1)Z_i=Y_i+100(i-1)
  5. 按如下公式计算 Rating 值 RR:$$R=\max\left(\left\lfloor\sum ^n _{i=1} 2^{-i}Z_i\right\rfloor,1\right) $$
  6. 按如下公式计算 Quality 值 QQ 用于 Performance 计算:Q=R12nQ=\left\lfloor\dfrac{R}{1-2^{-n}}\right\rfloor

例如:

参赛时间 Performance
2024/06/052024/06/05 00
2024/06/082024/06/08 300300
2024/06/112024/06/11 00
2024/06/162024/06/16 525525
2024/06/232024/06/23 300300

那么:

ii WiW_i XiX_i YiY_i ZiZ_i
11 300300 425425
22 525525 425425 300300 400400
33 00 200-200 00 200200
44 300300 00 200-200 100100
55 00 400-400 00

因此 R=343R=343Q=354Q=354。如果这就是上面的 Zinc,那么:

Cheaters

对于 Rated 比赛中的作弊者,我们将给予如下处罚:

  • 取消此用户该场比赛的 Rated 对象资格;
  • 取消此用户该场比赛的成绩;
  • 将此用户的 Rating 重置为 00
  • 清空此用户的所有 Rated 比赛参赛记录(为了给作弊者一个改过自新的机会,该条处罚只对此用户在受到处罚前参加的比赛生效,受到处罚后参加的比赛依然可以正常计算 Performance 和 Rating);
  • 将 tag 设置为 作弊者
  • 取消该用户的会员权限(如果有)。

对于其余比赛的作弊者,我们将给予如下惩罚:

  • 将 tag 设置为 作弊者
  • 取消该用户的会员权限(如果有)。

Special Rules

为了提高最初几场比赛的上分速度,我们做了如下调整:将原榜单上第 ii 位参赛者的 SS 值固定为为 $\left\lfloor 1000 \times\dfrac{n+1-i}{n}\right\rfloor$,其中 nn 是参赛人数(这一调整同时也会改变 TT 值)。

最初的 Sleeping Cup #1 - Sleeping Cup #5 适用 Special Rules。

从 Sleeping Cup #6 开始,如无特殊说明,计入 Rating 时默认不适用 Special Rules。

Levelling

Rating 等级[1] 名字颜色
00 00 #000000\color{#000000}\#000000[2]
1991 \sim 99[3] 11 #808080\color{#808080}\#808080
100199100 \sim 199 22 #804000\color{#804000}\#804000
200299200 \sim 299 33 #008000\color{#008000}\#008000
300399300 \sim 399 44 #00c0c0\color{#00c0c0}\#\text{00c0c0}
400499400 \sim 499 55 #0000ff\color{#0000ff}\#\text{0000ff}
500599500 \sim 599 66 #c0c000\color{#c0c000}\#\text{c0c000}
600699600 \sim 699 77 #ff8000\color{#ff8000}\#\text{ff8000}
70065534700 \sim 65534[4] 88 #ff0000\color{#ff0000}\#\text{ff0000}
-[5] 1111 #c000c0\color{#c000c0}\#\text{c000c0}

  1. 这是 Hydro 内置的用户等级。 ↩︎

  2. 暗色模式下会用 #ffffff\color{#ffffff}\#\text{ffffff} 代替 #000000\color{#000000}\#000000 来显示。 ↩︎

  3. 这也是保证 Rating 在参赛后 1\ge 1 的真实原因。 ↩︎

  4. 目前的 Rating 计算脚本只能在 Rating 65534\le 65534 的情况下工作。 ↩︎

  5. 这是管理员的专属等级。 ↩︎