Atcoder Rating System

Posted athousandmoons

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Atcoder Rating System相关的知识,希望对你有一定的参考价值。

来翻译一下官方文档,但是建议看英文原文,本文可能会出现一些错误,只是为了方便自己查阅用的。


对于你的每一场rated比赛,会有一个Performance值\(X_i\),你的rating是\(X_i-f(i)\)的加权平均,其中\(f(1)=1200\)\(f(i)\)单调递减。也就是说,如果你的Performance值稳定在\(X\)上,你的Rating会从\(X-1200\)逐渐上升为\(X\)

那如何计算Performance呢?对于每个选手,有一个值叫做\(APerf\)(Average Performance),设\(Perf_1,Perf_2,\ldots,Perf_k\)是你的每一场Perf(时间从后往前),那么
\[ APerf=\frac\sum_i=1^kPerf_i\times 0.9^i\sum_i=1^k0.9^i \]
那对于萌新来说怎么办呢?就要设一个默认值\(Center\),对于AGC,ARC,ABC这个值分别为\(1200,1000,800\).

设这场比赛rated人数为\(n\),它们的\(APerf\)值为\(APerf_i\),那么排名为\(r\)的人的Perf值为\(X\)\(X\)定义为
\[ \sum_i=1^n\frac11+6.0^(X-APerf_i)/400.0=r-0.5 \]
这个方程的解,那对于并列的人来说怎么办呢,\(r\)就取它们rank的平均值。

对于第一场比赛是需要特判的(为了防止第一场比赛的影响太小)
\[ Perf=(Perf-Center)*1.5+Center \]
还有你的\(RPerf\)值(Real Performance)
\[ RPerf=\min(Perf,RATEDBOUND+400) \]


最后的问题是如何计算Rating,设
\[ F(n)=\frac\sqrt\sum_i=1^n0.81^i\sum_i=1^n0.9^i \]

\[ f(n)=\fracF(n)-F(\infty)F(1)-F(\infty)\times 1200 \]


\[ g(X)=2^\fracX800 \]

\[ Rating=g^-1(\frac\sum_i=1^kg(RPerf_i-f(i))\times 0.9^i\sum_i=1^k0.9^i) \]
为什么\(g(X)\)要设成一个指数函数呢?因为当你被降智的时候,你有可能只会做1题,也有可能做4题,可能对于你来说差别不大。但是可能做出5题和做出6题的差别就很大了。而设成指数函数就可以让你在发挥超常的时候高兴很久,在被降智的时候也只用伤心一会儿。(逃

以上是关于Atcoder Rating System的主要内容,如果未能解决你的问题,请参考以下文章

AtCoder Grand Contest 044 题解

赛时总结◇赛时·VII◇ Atcoder ABC-106

梦开始的地方

MongoError:E11000 重复键错误集合:myFirstDatabase.tours 索引:rating_1 重复键: rating:null

Angular:找不到或无法读取要导入的文件:~css-star-rating/scss/star-rating

Donation---AtCoder - AtCoder Regular Contest 098