CodeForces & AtCoder rating 规则简述(最后更新于 2024.12.21)
译者:rui_er,转载请注明出处。
(备份自 2020 年 11 月 2 日的同名博客)本博客为了方便自己查阅,同时也方便大家了解,但因为我英语很菜,所以难免有翻译错的地方,还请评论区纠正。
未注明资料来源的均为常识积累。
1 CodeForces rating 规则
1.1 CodeForces rating 与名字颜色换算
设 表示 rating,则 CodeForces 的名字颜色有以下几等:(从低到高)
- 黑色不加粗(代码
#000000
):Unrated(Русский язык:Не в рейтинге),没有参加过比赛。 - 黑色(代码
#000000
):Headquarters(Русский язык:Штаб),管理员。 - 灰色(代码
#808080
):Newbie(Русский язык:Новичок),。 - 绿色(代码
#008000
):Pupil(Русский язык:Ученик),。 - 青色(代码
#03a89e
):Specialist(Русский язык:Специалист),。 - 蓝色(代码
#0000ff
):Expert(Русский язык:Эксперт),。 - 紫色(代码
#aa00aa
):Candidate Master(Русский язык:Кандидат в мастера),。 - 橙色(代码
#ff8c00
):Master(Русский язык:Мастер),。 - 橙色(代码
#ff8c00
):International Master(Русский язык:Международный мастер),。 - 红色(代码
#ff0000
):Grandmaster(Русский язык:Гроссмейстер),。 - 红色(代码
#ff0000
):International Grandmaster(Русский язык:Международный гроссмейстер),。 - 首字母黑色+红色:Legendary Grandmaster(Русский язык:Легендарный гроссмейстер),。
- 首字母红色+黑色:Tourist(Русский язык:Tourist),。
1.2 CodeForces rating 与是否计入比赛(及比赛赛制)
除非赛时因为 CodeForces 爆炸等原因 Unrated,否则比赛 rated 的范围通常如下:
- Div.4:,exICPC 赛制。
- Div.3:,exICPC 赛制。
- Div.2 Only:,CF 赛制。
- Div.2:,CF 赛制。
- Div.1:,CF 赛制。
- Educational Round:,exICPC 赛制。
- Global Round:,CF 赛制。
- 其他比赛:见赛前通知。
1.3 CodeForces rating 在 rated 比赛中的计算
此部分资料来源:翻译自 Open Codeforces Rating System [updated on October 2015]。
假设每一个人原来的 rating 为 ,则根据以下公式计算 在比赛中得分高于 的概率:
因此我们可以由两人的 rating 差值算出他们其中一个比另一个得分高的期望概率。例如,如果两个人的 rating 差为 ,则 rating 高的人赢过另一方的概率被认为是 ;若 rating 差为 ,则这一概率约为 。
根据这一概率,我们可以得到每个选手赛后的期望排名:
例如,在 Codeforces Round #318 [RussianCodeCup Thanks-Round] (Div. 1) 以前, 的 rating 为 ,因此期望排名约为 ; 的 rating 为 ,因此期望排名约为 。
一般的想法就是,如果实际排名比 更靠前,增加 rating;反之减少。
这里计算出 与实际排名的几何平均数:
则我们二分查找出一个 使得该用户计算出的 。显然 应该像更靠近 的方向变化。我们取 作为该用户的 rating 变化值。
不过我们为了让 rating 的平均变化更接近 ,还需进行以下微调:
定义一个数 ,让所有 增加 。
第一次微调:
保证所有人的平均变化接近 但在 以下。
第二次微调:
取前 高的人,取一个合理地 使得前 人的平均变化为 。但是 也不能太大,因此去 ,用这个值进行第二次微调。
CodeForces rating 计算的源码地址:Link。
1.4 CodeForces rating 初始值
此部分资料来源:Codeforces: Soon We Will Change the Rating Calculation for New Accounts。
以前的初始值都是 分,但在 2020.(5~6) 前后,CodeForces 更改了 rating 规则。
新注册的号(或未打过比赛的号)的初始 rating 是 而不是 。
对于比较新的号 rating 也会有不同的计算方式:
在第一场比赛中,将 rating 看作 来计算变化,然后计算后的 rating 会变成 。
在第二场比赛中,将 rating 看作 来计算变化,然后计算后的 rating 会变成 。
前六场比赛都是类似的方法,每次加的数是 ,总和为 。
以后的场按正常方式计算。
2 AtCoder 规则
2.1 AtCoder rating 与名字颜色换算
见 这里。 该网页已停止维护。
蓝及以下记 20 Kyu~1 Kyu(日本語:20 級~1 級),数字越小等级越高;黄及以上记 1 Dan~10 Dan(日本語:初段~十段),数字越大等级越高,再高就是 Legend(日本語:皆伝)和 King(日本語:極伝),是否有更高的等级暂不详。
2.2 AtCoder 可参加比赛的 rating
ABC、ARC、AGC 比赛界面可以查看。
一般地:
- ABC:。
- ARC:。
- ARC div2:。
- ARC div1:。
- AGC:。
- AHC:计算 β rating,与上面几个不是一个体系,且与 OI 不太相关,因此不翻译。
2.3 AtCoder rating 在 rated 比赛中的计算
此部分资料来源:翻译自 AtCoder Rating System ver. 1.00。
在每场比赛后,你都有一个 performance 值 。如果算出的这个值稳定在 ,则你的 rating 会从 逐渐上升为 。不用担心在第一场比赛中得到很低的 rating,你的真实水平可以在大于 场比赛后大致看出。
你可以在 https://atcoder.jp/users/{username}/history
查看你每场比赛的 performance 被四舍五入后的值,下面是计算方法:
对于每个参赛者,我们求出平均 perf:(这里 表示各场比赛获得的 perf,不四舍五入,时间从后向前)
对于没打过比赛的萌新来讲怎么办?我们设置 作为 :
令 为参赛人数, 表示 的 值,则排名为 的人的 perf 记为 ,为下面方程的解:
对于并列的人, 取他们 rank 的平均值。
对于第一场比赛,进行特判:
最后,真实的 perf 计算如下:
其中 表示 rated 的最大范围,见上一条。
计算完了 perf,让我们一起计算一下 rating!
什么你跟我说前面算了这么多乱七八糟的都没算 rating?
是的就是这个意思。
定义以下函数:
则:
注意到 是一个指数函数,大概是说当你被降智时做出 题和做出 题差异不大,但是超常发挥时做出 题和 题的差异要大得多。
换句话说就是超常发挥是让你高兴很久,发挥失常时只用伤心一会(???
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
2022-01-18 题解 CF917B【MADMAX】