zoukankan      html  css  js  c++  java
  • 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 imes 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}^nfrac{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)} imes 1200 ]

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

    [Rating=g^{-1}(frac{sum_{i=1}^kg(RPerf_i-f(i)) imes 0.9^i}{sum_{i=1}^k0.9^i}) ]

    为什么(g(X))要设成一个指数函数呢?因为当你被降智的时候,你有可能只会做1题,也有可能做4题,可能对于你来说差别不大。但是可能做出5题和做出6题的差别就很大了。而设成指数函数就可以让你在发挥超常的时候高兴很久,在被降智的时候也只用伤心一会儿。(逃

  • 相关阅读:
    点餐网站学习(EF+MVC)SEO站内结构
    点餐网站学习(EF+MVC)EF工具,自动创建模型并建立数据库映射关系
    个性化定制cms介绍
    EasyUI Munubutton 二级菜单
    程序员也是文艺青年
    EasyUI combobox加入请选择 [.net后台代码]
    LVS配置记录
    查询MYSQL库表使用空间
    python django 数据库操作
    Nginx修改版本信息或隐藏版本号
  • 原文地址:https://www.cnblogs.com/AThousandMoons/p/11625321.html
Copyright © 2011-2022 走看看