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\frac{1}{1+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)=\frac{F(n)-F(\infty)}{F(1)-F(\infty)}\times 1200 \]

\[g(X)=2^{\frac{X}{800}} \]

\[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題的差別就很大了。而設成指數函數就可以讓你在發揮超常的時候高興很久,在被降智的時候也只用傷心一會兒。(逃


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM