DOJ logoDOJ
题目
最近添加的题目收藏的题目
分类DLC比赛小组团队讨论区
排名
解题数量排行榜连续解题排名DOJ Power 排行榜
评测状态
征题登录注册
DOJ logoDOJ

支持 OI 子任务计分、Elo 等级分和 Discord 认证的社区在线评测系统。

题目
题目列表分类
社区
比赛排名讨论区公告举办外部比赛指南
账号
登录注册评测状态
政策
服务条款DLC 使用规则隐私政策API 文档语言运行环境比赛排名奖励评级与表现
© 2026 DOJ
保留所有权利

政策

  • 服务条款
  • DLC 使用规则
  • 隐私政策
  • API 文档
  • 语言运行环境
  • 比赛排名奖励
  • 评级与表现

评级与表现

评级反映多场比赛积累的实力;表现分将单场比赛成绩转换为评级尺度。

当前评级等级

以下为DOJ当前配置的等级。区间包含两端,个人资料与用户名使用相同颜色。

评级区间等级名称颜色
0–1199NEWBIE#64748b
1200–1399PUPIL#22c55e
1400–1599SPECIALIST#14b8a6
1600–1799EXPERT#3b82f6
1800–1999CANDIDATE_MASTER#8b5cf6
2000–2199MASTER#f97316
2200–2399INTERNATIONAL_MASTER#ef4444
2400及以上GRANDMASTER#dc2626

参与者与排名

计算使用已报名、符合评级范围的普通账号正式参赛者。非正式参赛者、榜单排除对象及永久封禁账号不参与。按总分降序、同分时按罚时升序排列,两者相同视为并列。零分参赛者也参与计算。

DOJ Arena表现分

以已完成前三场评级比赛的参赛者为基准。设每人的当前评级为R_j,排名在前的人数为a,并列人数为t,通过二分查找求出满足下式的P。若配置了虚拟零分参赛者,其人数和评级也计入。 临时封禁的成熟参赛者以正式参赛者为基准单独计算,不影响其他参赛者的表现分。

公式中F为限制前表现分,F_final为最终表现分。F_upper和F_lower为相邻上、下方参赛者的表现分,R_old和R_new为调整前、后的评级。

∑j11+10(P−Rj)/400=a+t2\sum_j\frac{1}{1+10^{(P-R_j)/400}}=a+\frac{t}{2}j∑​1+10(P−Rj​)/4001​=a+2t​

转换为显示表现分

P在400至2400之间(不含2400)时保持不变。低于400时采用指数转换,达到2400时采用对数转换,然后应用下述上限。

F(P)={max⁡ ⁣(1,400e(P−400)/400)P<400P400≤P<24002400+800ln⁡ ⁣(P−1600800)P≥2400F(P)=\begin{cases}\max\!\left(1,400e^{(P-400)/400}\right)&P<400\\P&400\le P<2400\\2400+800\ln\!\left(\frac{P-1600}{800}\right)&P\ge2400\end{cases}F(P)=⎩⎨⎧​max(1,400e(P−400)/400)P2400+800ln(800P−1600​)​P<400400≤P<2400P≥2400​

前三场评级比赛

前三场采用排名插值:取最近的上、下方成熟参赛者表现分的平均值。没有上方参赛者时使用3000,没有下方时使用0;没有成熟参赛者时结果为1500。插值后仍应用相同上限。

F=Fupper+Flower2F=\frac{F_{\mathrm{upper}}+F_{\mathrm{lower}}}{2}F=2Fupper​+Flower​​

比赛评级上限 + 400

若比赛设置的评级参赛上限为L,最终表现分不超过L + 400。使用比赛设置,而非参赛者的最高评级。未设上限时不限制。最终表现分四舍五入为整数显示。

Ffinal=min⁡ ⁣(F,L+400)F_{\mathrm{final}}=\min\!\left(F,L+400\right)Ffinal​=min(F,L+400)

例:评级上限1600的比赛中,计算表现分2300会被限制为2000。Arena中原评级1200的参赛者将变为1400。

表现分与评级变化

DOJ Arena将当前评级向限制后的最终表现分移动差值的四分之一。新评级四舍五入为整数,最低为1。比赛结束后由组织者审核并确认计算结果后生效。

Rnew=max⁡ ⁣(1,round⁡ ⁣(Rold+Ffinal−Rold4))R_{\mathrm{new}}=\max\!\left(1,\operatorname{round}\!\left(R_{\mathrm{old}}+\frac{F_{\mathrm{final}}-R_{\mathrm{old}}}{4}\right)\right)Rnew​=max(1,round(Rold​+4Ffinal​−Rold​​))

使用Codeforces算法的比赛

Codeforces算法也按排名计算表现分并应用相同上限。成熟参赛者的评级变化单独计算,使用预期排名、实际与预期排名的几何平均、半步调整,以及全体和高评级参赛者修正;不使用Arena的四分之一公式。前三场参赛者采用上述插值和四分之一调整。 Codeforces算法排除所有处于封禁状态的账号,包括临时封禁。