Rating 计算规则(v1.4)

规则标识: cf_like_v1_4
适用范围: 本站正式个人编程比赛
适用比赛类型: XCPC类型、IO型、IOI型
规则性质: 本站自定义 Rating 规则

一、基本参数

参数 规定值
初始内部实力分 1400
初始展示 Rating 0
初始有效 Rated 场数
新手定级场数 6 场
前六场展示补分 500、350、250、150、100、50
胜率公式尺度参数 400
原始实力变化系数 1/2
最低有效计分人数 5 人
允许的比赛类型 XCPC类型、IO型、IOI型
第一次全场修正偏移量 −1
第二次全场修正范围 [−10, 0]
展示 Rating 下限 0
内部实力分上下限 不设置业务上下限
单场实力变化上下限 不额外设置
比赛权重 所有使用本规则的比赛均为 1
并列名次处理方式 使用并列选手占据位置的平均值
平台管理员参赛资格 与普通用户适用相同的排名及计分条件
本场身份排除对象 本场比赛发布者、本场比赛管理员

本版本的基本参数及身份排除规则不得在比赛进行中或结算时临时修改。基本参数、身份排除规则、计算公式或取整方式变更时,必须启用新的规则版本。

二、用户状态

2.1 状态字段

符号 字段 规定
HiH_i internal_rating 用户 ii 的内部实力分,整数
RiR_i rating 用户 ii 的展示 Rating,非负整数
kik_i rated_count 用户 ii 已正式结算的有效 Rated 比赛场数,非负整数
Rimax⁡R_i^{\max} max_rating 用户 ii 历史最高展示 Rating,非负整数

胜率、期望排名、目标实力分及全场修正均使用内部实力分 HiH_i。

用户页面、名字颜色、等级、展示排行榜及参赛分段均使用展示 Rating RiR_i。

2.2 初始化

未参加过有效 Rated 比赛的用户初始化为:

$$H_i=1400,\qquad R_i=0,\qquad k_i=0,\qquad R_i^{\max}=0.$$

2.3 新手展示补分

用户第 tt 场有效 Rated 比赛对应的展示补分为:

$$B_t= \begin{cases} 500,&t=1,\\ 350,&t=2,\\ 250,&t=3,\\ 150,&t=4,\\ 100,&t=5,\\ 50,&t=6,\\ 0,&t\ge 7. \end{cases}$$

完成 kk 场有效 Rated 比赛后,尚未释放的展示分为:

U(k)=1400−∑t=1min⁡(k,6)Bt.U(k)=1400-\sum_{t=1}^{\min(k,6)}B_t.

当 k=0k=0 时,上式中的求和为 00。

已完成有效 Rated 场数 kk 尚未释放的展示分 U(k)U(k)
0 1400
1 900
2 550
3 300
4 150
5 50
6 及以上 0

展示 Rating 必须满足:

Ri=max⁡(0,Hi−U(ki)).\boxed{R_i=\max\left(0,H_i-U(k_i)\right)}.

新手展示补分不得加入内部实力分,不得参与期望排名计算,不得参与两次全场修正。

前六场比赛不设置免扣分保护,内部实力分按照统一公式正常增减。

三、比赛计分资格

3.1 比赛配置

每场比赛必须在开始前固定以下配置:

字段 规定
contest_type 比赛类型,仅允许取 XCPC、IO、IOI 三个值
publisher_id 本场比赛发布者的用户 ID
contest_admin_ids 本场比赛管理员的用户 ID 集合;无比赛管理员时为空集合
is_rated 是否申请按 Rated 比赛结算
rated_min 最低允许计分的展示 Rating,包含该边界;未设置时取 0
rated_max 最高允许计分的展示 Rating,不包含该边界;未设置时不限制上界
rating_version 本场 Rating 计算版本,取 cf_like_v1_4
score_rule 本场最终成绩的统计方式及同分排序规则,必须与所选比赛类型一致
start_time 比赛开始时间
end_time 比赛结束时间

比赛类型仅限以下三种:

比赛类型 contest_type 取值
XCPC类型 XCPC
IO型 IO
IOI型 IOI

每场比赛只能选择一种比赛类型。比赛类型、成绩统计方式及同分排序规则必须在赛前公布并固定,不得在比赛进行中或结算时临时变更。

比赛类型缺失、取值不在上述范围内,或成绩排序规则未按要求固定时,不得按本版本进行正式 Rating 结算。

Rating 计分范围统一采用左闭右开区间:

rated_min≤Ri<rated_max.\texttt{rated\_min}\le R_i<\texttt{rated\_max}.

未设置上界时,只检查下界。下界和上界均未设置时,所有非负展示 Rating 均满足分数范围要求。

比赛类型与 Rating 计分范围分别配置。rated_min、rated_max 仅用于限制计分资格,不构成额外的比赛类型;具体范围以赛前公布的配置为准。

publisher_id 与 contest_admin_ids 只表示用户在本场比赛中的组织身份。不得因为用户是平台管理员、超级管理员或拥有其他平台权限,就自动将其认定为本场比赛发布者或本场比赛管理员。

本场比赛发布者和比赛管理员名单必须随本场参赛资格一并冻结并留存。正式结算与历史重放必须使用本场身份记录,不得以用户当前的平台身份或其他比赛的管理身份替代;经正式审核作出的本场身份资格更正,按本规则的撤销与重算规定处理。

3.2 用户计分条件

用户必须同时满足以下条件,才能进入本场有效计分集合:

  1. 以正式个人参赛身份参加比赛,不属于虚拟参赛、练习参赛、旁观参赛或赛后补题。
  2. 不是本场比赛发布者,且不属于本场比赛管理员。
  3. 比赛开始时的展示 Rating 满足本场计分范围。
  4. 在有效比赛时间内,对本场题目至少产生一次有效提交。
  5. 未被取消本场成绩或本场计分资格。

平台管理员、超级管理员、教师及其他平台身份用户,只要满足上述条件,必须与普通用户一样进入本场有效计分集合,不得仅因平台身份被排除。

有效提交必须满足本场题目、语言及提交时间要求,并具有非平台故障的最终评测结果。AC、WA、TLE、MLE、RE、CE 等结果均可构成有效提交。

排队中、评测中以及仅返回系统错误的提交,不作为已经完成评测的有效提交。存在尚未处理的评测问题时,不得进行正式结算。

用户是否通过题目、是否获得正分,不作为进入计分集合的额外条件。

用户一旦满足计分条件,不得因成绩不佳申请退出本场计分集合。

3.3 不计分情形

满足以下任一情形时,整场比赛不进行 Rating 结算:

  1. is_rated 为 false。
  2. 最终有效计分人数少于 5 人。
  3. 按本场全部有效排名规则,所有有效计分选手完全并列。
  4. 因严重平台故障、题目泄露、评测异常或比赛组织问题,整场比赛被正式宣布为 Unrated。

不计分比赛不得修改用户的内部实力分、展示 Rating、有效 Rated 场数及历史最高展示 Rating。

报名但没有有效提交的用户不计分,不增加有效 Rated 场数。

本场比赛发布者、本场比赛管理员不得进入本场有效计分集合,不参与本场 Rating 结算,不增加本场有效 Rated 场数,其内部实力分、展示 Rating 及历史最高展示 Rating 不因本场比赛发生变化。

被取消本场成绩或计分资格的用户应在正式计算前移出计分集合。本规则不额外规定作弊处罚扣分。

最终有效计分人数达到 5 人(含 5 人),且不存在上述不计分情形时,本场比赛进行 Rating 结算。参赛人数按最终有效计分集合统计,不按报名人数统计。满足计分条件的平台管理员计入该人数;本场比赛发布者、本场比赛管理员不计入该人数。

3.4 平台身份与本场组织身份

平台身份与本场组织身份必须分别判断。本节只规定基于身份的排除规则,不替代本规则规定的其他参赛、成绩及计分资格条件。

用户身份 本场正式排名 本场 Rating 计算
普通用户 按正常参赛及成绩资格参与 满足第 3.2 节及整场计分条件时参与
平台管理员、超级管理员 与普通用户相同
教师及其他平台身份用户
本场比赛发布者 不参与,不占用正式名次 不参与
本场比赛管理员

同一用户具有多个身份时,只要是本场比赛发布者或本场比赛管理员,即按本场身份排除规则处理;平台管理员身份不能覆盖或豁免该限制。

本场比赛发布者、本场比赛管理员的测试提交或测试成绩可以单独保留,但不得计入本场正式排名、Rating 计算名次或有效计分人数。确需在公开页面展示时,必须置于不排名区域,并明确标注“比赛发布者/不排名/不计分”或“比赛管理员/不排名/不计分”;名次与本场 Rating 变化显示为“—”。该正式排名排除规则同样适用于 Unrated 比赛。

身份排除仅作用于对应比赛。用户是其他比赛的发布者或比赛管理员,不影响其正常参加本场比赛;用户发布或管理某场比赛,不因此被移出平台 Rating 排行榜,也不影响其已有 Rating、等级及历史有效成绩。

平台 Rating 排行榜不得仅因用户具有管理员、超级管理员、教师等平台身份而排除该用户,所有用户适用相同的上榜及排序条件。

四、计分集合与赛前快照

先按照本场身份与参赛资格确定正式排名用户,再从中筛选满足本场全部计分条件的用户,组成最终有效计分集合 SS。本场比赛发布者、本场比赛管理员不得进入正式排名或集合 SS;满足条件的平台管理员、超级管理员与普通用户一并纳入。

最终有效计分人数为:

n=∣S∣.n=|S|.

本场用于 Rating 计算的实际排名、胜率、期望排名、目标实力分和全场修正,必须全部使用同一个集合 SS。

正式比赛排名与 Rating 计算排名必须区分。非本场组织人员因展示 Rating 超出计分范围等原因不计分时,可以按本场参赛及成绩规则保留正式比赛排名,但不得参与 Rating 计算,不得占用 Rating 计算名次。

本场比赛发布者、本场比赛管理员既不参与正式比赛排名,也不参与 Rating 计算排名;其展示方式按第 3.4 节处理。不得将“可以保留非计分选手”理解为允许本场比赛发布者或比赛管理员占用正式名次。

正式计算必须使用统一冻结的赛前状态:

$$\left(H_i,R_i,k_i,R_i^{\max}\right),\qquad i\in S.$$

不得使用其他选手在本场计算过程中已经更新的分数。

同一 Rating 池内,Rated 比赛按时间串行举办和结算。前一场比赛完成正式结算或被确定为 Unrated 后,下一场 Rated 比赛方可冻结赛前快照并开始。

五、实际排名

5.1 成绩排序

本场比赛先排除本场比赛发布者、本场比赛管理员及其他不具备正式排名资格的用户,再按照赛前公布的成绩规则生成正式比赛排名。平台管理员、超级管理员在不属于本场身份排除对象且具备正式排名资格时,必须与普通用户共同排序,不得设置管理员专属排名或另行排除。

计算 Rating 时,在正式比赛排名的基础上进一步移除所有非计分选手,得到集合 SS 内的连续位置 1,2,…,n1,2,\ldots,n。本场比赛发布者、本场比赛管理员及其他非计分选手均不得影响集合 SS 内的位置和并列平均名次。

比赛类型 成绩排序规则
XCPC类型 通过题数降序,再按罚时升序;额外同分规则以赛前公布的 score_rule 为准
IO型 最终总得分降序;额外同分规则以赛前公布的 score_rule 为准
IOI型

IO型、IOI型的单题取分方式、多次提交的成绩选取方式及评测反馈方式,以各自赛前公布的比赛规则为准。本 Rating 规则不另行定义或改变上述细节,仅使用最终成绩及同分排序规则确定实际名次。

三种比赛类型使用相同的 Rating 计算公式,比赛权重均为 1,不因比赛类型额外增加奖励分或设置不同倍率。

未在赛前公布的同分规则不得用于正式结算。

用户 ID、注册时间、数据库返回顺序以及未公布的提交时间规则,不得用于打破成绩并列。

5.2 并列名次

设用户 ii 所在的并列组,在有效计分榜单中占据第 LiL_i 至第 ViV_i 个位置,则实际名次为:

qi=Li+Vi2.\boxed{q_i=\frac{L_i+V_i}{2}}.

不存在并列时,Li=ViL_i=V_i。

qiq_i 允许为整数或半整数,不得向上取整、向下取整或四舍五入。

六、胜率与期望排名

6.1 两两胜率

对任意不同的有效计分用户 i,j∈Si,j\in S,定义:

$$\boxed{ P_{i,j}=\frac{1}{1+10^{\frac{H_j-H_i}{400}}} }.$$

必须满足:

Pi,j+Pj,i=1.P_{i,j}+P_{j,i}=1.

不得将选手本人计为对手。

6.2 期望排名

用户 ii 的期望排名为:

$$\boxed{ E_i=1+\sum_{\substack{j\in S\\j\ne i}}P_{j,i} }.$$

等价计算式为:

$$\boxed{ E_i=1+\sum_{\substack{j\in S\\j\ne i}} \frac{1}{1+10^{\frac{H_i-H_j}{400}}} }.$$

EiE_i 保留计算精度,不得提前取整。

七、目标排名与目标实力分

7.1 目标排名

用户 ii 的目标排名为:

Mi=Eiqi.\boxed{M_i=\sqrt{E_iq_i}}.

MiM_i 保留计算精度,不得提前取整。

7.2 目标实力函数

对用户 ii 定义:

$$\boxed{ F_i(x)=1+\sum_{\substack{j\in S\\j\ne i}} \frac{1}{1+10^{\frac{x-H_j}{400}}} }.$$

计算 Fi(x)F_i(x) 时,仅替换用户 ii 的假设实力分;其他用户仍使用赛前内部实力分 HjH_j。

用户 ii 的原内部实力分不得作为额外对手加入求和。

7.3 整数目标实力分

目标实力分定义为:

$$\boxed{ T_i=\max\left\{x\in\mathbb Z:F_i(x)\ge M_i\right\} }.$$

必须满足:

Fi(Ti)≥Mi,Fi(Ti+1)<Mi.F_i(T_i)\ge M_i,\qquad F_i(T_i+1)<M_i.

采用整数二分时,必须动态确定整数左右边界 ai,bia_i,b_i,满足:

$$a_i<b_i,\qquad F_i(a_i)\ge M_i,\qquad F_i(b_i)<M_i.$$

二分结束条件为:

bi−ai=1.b_i-a_i=1.

最终取:

Ti=ai.T_i=a_i.

不得将目标实力分或二分范围固定限制在 [0,4000][0,4000] 内。

八、原始实力变化

定义向零取整函数:

$$\operatorname{trunc}(x)= \begin{cases} \lfloor x\rfloor,&x\ge0,\\ \lceil x\rceil,&x<0. \end{cases}$$

用户 ii 的原始实力变化为:

$$\boxed{ d_i^{(0)}=\operatorname{trunc}\left(\frac{T_i-H_i}{2}\right) }.$$

负数除法必须按向零取整处理,不得替换为向下取整。

不得在原始实力变化中加入新手展示补分、额外名次奖励、参赛奖励或题目奖励。

九、第一次全场修正

计算全部有效计分用户的原始实力变化之和:

D0=∑i∈Sdi(0).D_0=\sum_{i\in S}d_i^{(0)}.

第一次统一修正量为:

$$\boxed{ c_1=-\operatorname{trunc}\left(\frac{D_0}{n}\right)-1 }.$$

对每一名有效计分用户统一更新:

di(1)=di(0)+c1.\boxed{ d_i^{(1)}=d_i^{(0)}+c_1 }.

c1c_1 只计算一次,并对集合 SS 中所有用户使用同一个值。

第一次修正后的变化总和必须满足:

∑i∈Sdi(1)<0.\sum_{i\in S}d_i^{(1)}<0.

本规则不执行严格零和调整。

十、第二次全场修正

10.1 参考人数

计算:

$$\boxed{ s=\min\left(n,\left\lfloor4\sqrt n\right\rfloor\right) }.$$

10.2 高分参考群体

将有效计分用户按赛前内部实力分 HiH_i 从高到低排序。

设排序后第 ss 个位置对应的内部实力分为 h∗h_*。

参考群体定义为:

G={i∈S:Hi≥h∗}.\boxed{G=\{i\in S:H_i\ge h_*\}}.

参考群体人数为:

g=∣G∣.g=|G|.

边界分数相同的用户必须全部纳入 GG,允许 g>sg>s。

参考群体不得按本场实际名次、展示 Rating、历史最高 Rating 或用户 ID 选取。

10.3 修正量

使用第一次修正后的变化计算:

DG=∑i∈Gdi(1).D_G=\sum_{i\in G}d_i^{(1)}.

未经限制的第二次修正量为:

$$c_2^*=-\operatorname{trunc}\left(\frac{D_G}{g}\right).$$

实际第二次修正量为:

c2=min⁡(0,max⁡(−10,c2∗)).\boxed{c_2=\min\left(0,\max(-10,c_2^*)\right)}.

10.4 最终内部实力变化

对集合 SS 中所有用户统一计算:

Δi=di(1)+c2.\boxed{\Delta_i=d_i^{(1)}+c_2}.

等价计算式为:

Δi=di(0)+c1+c2.\boxed{\Delta_i=d_i^{(0)}+c_1+c_2}.

第二次修正必须应用于全部有效计分用户,不得仅应用于参考群体 GG。

完成第二次修正后,不得再执行额外归零、保底、限幅、名次加分或手工调分。

十一、赛后状态更新

全部用户的最终内部实力变化计算完成后,统一更新赛后状态。

11.1 内部实力分

Hi′=Hi+Δi.\boxed{H_i'=H_i+\Delta_i}.

内部实力分允许为负数,不得截断为 00。

11.2 有效 Rated 场数

ki′=ki+1.\boxed{k_i'=k_i+1}.

每场有效 Rated 比赛只增加一次场数。

11.3 展示 Rating

Ri′=max⁡(0,Hi′−U(ki′)).\boxed{R_i'=\max\left(0,H_i'-U(k_i')\right)}.

展示分下限仅应用于展示 Rating,不得反向修改内部实力分。

不得依据已截断的展示 Rating 反推出内部实力分。

11.4 页面展示的 Rating 变化

ΔRi=Ri′−Ri.\boxed{\Delta R_i=R_i'-R_i}.

页面展示变化必须使用赛后展示 Rating 减去赛前展示 Rating,不得直接使用 Δi\Delta_i 或固定补分相加代替。

11.5 历史最高展示 Rating

正常新增结算时:

$$\boxed{R_i^{\max\prime}=\max\left(R_i^{\max},R_i'\right)}.$$

撤销或重算历史比赛时,必须依据重算后的有效历史记录重新计算历史最高展示 Rating。

十二、等级与名字颜色

12.1 等级判断

当 ki=0k_i=0 时,用户等级为 Unrated(未评级)。

当 ki≥1k_i\ge1 时,按照当前展示 Rating RiR_i 判断等级。

分数区间 英文名称 中文名称 名字颜色或样式
ki=0k_i=0 Unrated 未评级 黑色 #000000,不加粗
ki≥1k_i\ge1 且 0≤Ri<12000\le R_i<1200 Novice 新苗 灰色 #808080,加粗
1200≤Ri<14001200\le R_i<1400 Trainee 习练 绿色 #008000,加粗
1400≤Ri<16001400\le R_i<1600 Practitioner 践行 青色 #03a89e,加粗
1600≤Ri<19001600\le R_i<1900 Skilled 熟手 蓝色 #0000ff,加粗
1900≤Ri<21001900\le R_i<2100 Proficient 能手 紫色 #aa00aa,加粗
2100≤Ri<23002100\le R_i<2300 Elite 菁英 橙色 #ff8c00,加粗
2300≤Ri<24002300\le R_i<2400 Core Elite 核心菁英
2400≤Ri<26002400\le R_i<2600 Apex 校巅 红色 #ff0000,加粗
2600≤Ri<30002600\le R_i<3000 Veteran 元老 首个字符黑色,其余红色,加粗
3000≤Ri<40003000\le R_i<4000 Legend 传说
Ri≥4000R_i\ge4000 Supreme 至臻 首个字符红色,其余黑色,加粗

首个显示字符按完整 Unicode 字素处理,不得按 UTF-8 字节或 UTF-16 单个编码单元截断。

平台管理员、超级管理员、教师及其他平台身份通过独立身份标识显示;身份标识本身不作为 Rating 等级判断依据,也不替代用户的 Rating 等级和名字颜色。

所有用户,包括平台管理员和超级管理员,均按照相同的有效 Rated 场数 kik_i 与展示 Rating RiR_i 规则确定等级、名字颜色及定级状态,不设置管理员专属 Rating 等级,不因平台身份隐藏或取消其 Rating。

本场比赛发布者、本场比赛管理员仅不参与对应比赛的正式排名与 Rating 计算,其已有 Rating、等级和名字颜色仍正常显示。

12.2 定级状态

场数条件 状态
ki=0k_i=0 未定级
1≤ki<61\le k_i<6 定级中,显示进度 ki/6k_i/6
ki≥6k_i\ge6 已完成定级

长期未参赛不自动扣除内部实力分或展示 Rating。

活动积分、课程积分、获奖积分、刷题数量及签到记录不得直接修改本规则下的 Rating。

十三、数值与取整规范

13.1 整数规范

内部实力分、展示 Rating、目标实力分、各阶段变化值和统一修正量均按整数存储。

整数运算应使用有符号 64 位整数或更大范围的整数类型。发生溢出风险时必须中止结算,不得溢出回绕、截断或饱和写入。

除本规则明确规定的 trunc⁡\operatorname{trunc} 和 ⌊⋅⌋\lfloor\cdot\rfloor 外,不得额外取整。

13.2 实数规范

胜率、期望排名、目标排名及目标实力函数的计算精度不得低于 IEEE 754 双精度。

计算中不得按页面显示位数提前保留小数,不得使用格式化后的数值继续计算。

指数与概率计算必须防止上溢、下溢和无效数值影响二分判定。

出现下列任一情况时,必须提高计算精度并重新计算;仍不能可靠计算时,应中止结算:

  1. 期望排名或目标排名因数值误差不满足 1<Ei<n1<E_i<n、1<Mi<n1<M_i<n。
  2. 二分搜索不能取得符合要求的左右边界。
  3. 无法可靠判断目标整数边界,或结果不满足 Fi(Ti)≥Mi>Fi(Ti+1)F_i(T_i)\ge M_i>F_i(T_i+1)。
  4. 出现 NaN、无穷值、溢出或无效运算。

不得通过强制修改目标排名、固定目标分数上限或随意引入比较容差,使异常计算继续结算。

13.3 展示精度

展示 Rating 和 Rating 变化均显示整数。

期望排名和目标排名在页面上保留两位小数;展示时的舍入不得影响后台计算值。

同一规则版本必须固定数值计算实现、整数取整方式和并列处理方式。

十四、结算流程

正式结算必须按以下顺序执行:

  1. 确认评测、重测、成绩审核及本场违规处理已经完成。
  2. 检查比赛类型是否为 XCPC、IO、IOI 之一,核对赛前固定的 rating_version、score_rule 及其他比赛配置,并确定比赛是否满足 Rated 条件。
  3. 根据冻结的本场比赛发布者、比赛管理员名单和参赛资格,先排除本场比赛发布者、本场比赛管理员,再结合有效提交及最终资格处理结果构建计分集合 SS;满足条件的平台管理员、超级管理员必须正常纳入,不得按平台管理员身份统一过滤。
  4. 检查最终有效计分人数是否达到 5 人(含 5 人)及全体完全并列条件;不满足计分条件时,结束结算且不修改用户状态。
  5. 在集合 SS 内重新确定连续位置及并列平均实际名次 qiq_i。
  6. 读取全部有效计分用户的统一赛前快照。
  7. 计算全部用户的期望排名 EiE_i。
  8. 计算全部用户的目标排名 MiM_i。
  9. 二分计算全部用户的整数目标实力分 TiT_i。
  10. 计算全部用户的原始实力变化 di(0)d_i^{(0)}。
  11. 计算第一次统一修正量 c1c_1,得到 di(1)d_i^{(1)}。
  12. 按赛前内部实力分确定参考群体 GG,计算第二次统一修正量 c2c_2。
  13. 计算全部用户的最终内部实力变化 Δi\Delta_i。
  14. 计算赛后内部实力分、有效 Rated 场数、展示 Rating、展示变化及历史最高分。
  15. 完成数值、资格、计分集合及状态一致性检查。
  16. 在同一事务中写入结算记录、用户状态和比赛结算状态。

不得在步骤 16 之前部分更新用户的正式 Rating 状态。

预测结果和待审核结果不得计入正式用户状态,不得增加有效 Rated 场数。

十五、结算记录与重算

15.1 必须保存的记录

每个用户的单场 Rating 流水必须保存:

类别 字段内容
标识 用户 ID、比赛 ID、比赛类型 contest_type、Rating 池 ID、规则版本
赛前状态 内部实力分、展示 Rating、有效 Rated 场数、历史最高展示 Rating
排名输入 本场正式排名资格、计分资格、本场发布者及比赛管理员身份判定、最终成绩、实际名次 qiq_i、有效计分人数 nn
计算过程 期望排名 EiE_i、目标排名 MiM_i、整数目标实力分 TiT_i、原始变化 di(0)d_i^{(0)}
统一修正 第一次修正量 c1c_1、第二次修正量 c2c_2
参考群体 参考分数阈值 h∗h_*、参考群体人数 gg
最终变化 内部实力变化 Δi\Delta_i、本场展示补分 Bki+1B_{k_i+1}、实际展示变化 ΔRi\Delta R_i
赛后状态 内部实力分、展示 Rating、有效 Rated 场数、历史最高展示 Rating
审计信息 结算批次、结算时间、快照版本、记录有效状态、撤销或重算原因

赛前固定的比赛类型与 score_rule、publisher_id、contest_admin_ids、参赛资格快照、赛前状态快照、最终计分集合以及输入成绩应保存可校验的原始记录,不得仅保存页面展示结果。

本场比赛发布者、本场比赛管理员的不排名、不计分身份及判定依据应保存为比赛资格审计记录,不得为其生成本场有效正式 Rating 流水。平台管理员是否参与本场计分,应由本场组织身份及正常计分条件共同判定,不得仅依据平台身份字段。

15.2 重复结算

同一比赛、同一用户只能存在一条当前有效的正式结算记录。

相同输入和相同规则版本重复执行时,必须返回相同结果,不得重复增加分数或场数。

任一用户更新失败时,整场事务必须回滚,不得产生部分成功的正式结算。

15.3 撤销与重算

比赛排名、计分集合或 Rated 状态发生正式变更时,必须从该场比赛之前的有效状态开始重新计算。

同一 Rating 池内,该场及其后的所有已结算 Rated 比赛必须按照原定时间顺序重放,不得仅修改单个用户的当前分数。

重算期间不得并发提交该 Rating 池的新正式结算。

后续比赛已冻结的参赛分段资格保持不变,不得仅因历史 Rating 重算而追溯取消或新增用户的历史计分资格;该规则同样适用于平台管理员、超级管理员,经正式审核作出的资格变更除外。

重算时应根据重放后的前序结果重建计算用状态快照,并保留原始快照及变更记录。参赛资格快照与重算用状态快照必须分别保存。

重算使用各场比赛原有的规则版本,不得自动套用最新规则。比赛类型与成绩排序规则使用该场赛前固定的配置,不得改用其他比赛类型的规则。

本场身份资格经正式审核发生更正并影响正式排名或计分集合时,必须同步更正比赛榜单与资格记录;已经结算的比赛按本节要求进行历史重放,不得仅删除或新增某个用户的 Rating 流水而不重算其他受影响用户。

被撤销为 Unrated 的比赛不产生分数变化、不占用有效 Rated 场数,其后的新手补分场次必须随历史重放重新确定。

历史最高展示 Rating 必须依据重算后的全部有效历史重新求取。

十六、一致性校验

正式写入结果前,必须满足以下条件:

  1. 计分人数与最终集合 SS 一致,实际名次仅基于集合 SS 计算。
  2. 所有用户使用同一版本的赛前输入,任何用户的赛后分数未参与本场其他用户计算。
  3. 原内部实力分相同且实际名次相同的用户,其内部实力变化相同。
  4. 调整用户输入顺序或同分用户存储顺序,不改变计算结果。
  5. 新手展示补分未参与胜率、期望排名及两次全场修正。
  6. 每个用户均满足 Hi′=Hi+ΔiH_i'=H_i+\Delta_i、ki′=ki+1k_i'=k_i+1、Ri′=max⁡(0,Hi′−U(ki′))R_i'=\max(0,H_i'-U(k_i'))。
  7. 页面展示变化严格满足 ΔRi=Ri′−Ri\Delta R_i=R_i'-R_i。
  8. 第二次统一修正量满足 −10≤c2≤0-10\le c_2\le0。
  9. 最终内部实力变化总和满足 ∑i∈SΔi<0\sum_{i\in S}\Delta_i<0。
  10. 正式结算可重复执行而不产生重复写入,撤销和历史重放后状态保持一致。
  11. 比赛类型必须为 XCPC、IO、IOI 之一,实际排名使用的成绩排序规则必须与该场赛前固定的比赛类型及 score_rule 一致。
  12. 本场比赛发布者、本场比赛管理员均未进入本场正式排名、计分集合 SS 或参考群体 GG,未占用正式名次及 Rating 计算名次,未计入有效计分人数。
  13. 满足本场参赛、成绩及计分条件的平台管理员、超级管理员未因平台身份被排除,其排名与 Rating 计算规则与普通用户一致。
  14. 本场比赛发布者、本场比赛管理员未因本场比赛增加有效 Rated 场数,内部实力分、展示 Rating 及历史最高展示 Rating 未因本场比赛发生变化。
  15. 平台身份、本场发布者身份、本场比赛管理员身份分别保存和判定,不得混用;身份排除仅作用于对应比赛,不影响其他比赛的正常参赛资格及平台 Rating 排行榜资格。

0 条评论

目前还没有评论...