17. Dr. Mouse and Elo Rating

单点时限: 1.0 sec

内存限制: 256 MB

Elo Rating,即 ELO 等级分制度,是由匈牙利裔美国物理学家 Arpad Elo 创建的一个衡量各类对弈活动水平的评价方法,是当今对弈水平评估的公认的权威方法。Elo Rating 的计算方法很多,其中一种比较公认的算法是这样的:

假设有 $N$ 名选手,在一开始,令他们的等级分均为 $1500$。下面进行多场对决。

在每场对决前,假设选手 A 和 B 的当前等级分分别为 $R_A$ 和 $R_B$,则A对B的获胜概率为
$$P_{A}={\frac 1{1+10^{{(R_{B}-R_{A})/400}}}},$$

类似有 B 为 A 的胜率为
$$P_{B}={\frac 1{1+10^{{(R_{A}-R_{B})/400}}}}.$$

设其中一位选手 A 在比赛中得分为 $S_A$,规定:胜则 $S_A=1$,平则 $S_A=0.5$,负则 $S_A=0$。那么,得分期望为:
$$E_A=P_A, E_B=P_B,$$

则他在赛后的新等级分是
$$R_{A}^{\prime }=R_{A}+K_A \times (S_{A}-E_{A}).$$

同理对B有
$$R_{B}^{\prime }=R_{B}+K_B \times (S_{B}-E_{B}).$$

其中K值的选取与当前选手赛前等级分有关,对于选手 $X$:

$$K_X =
\begin{cases}
32 & {R_X < 2100}\
24 & {2100 \leq R_X < 2400}\
16 & {R_X \geq 2400}
\end{cases}$$

注意:等级分始终作为实数处理。

Jerry 在 Tom 不在的时候给小猫代课。比如说今天就讲授了 Elo Rating 的计算方法。但由于讲课水平太迷,小猫完全不明白,在做作业的时候也遇到的很大的困难。你的任务就是帮小猫完成作业(作业要求见输入格式)。

输入格式

唯一一组数据。

首先规定参赛选手数量不超过 $10^3$,而且编号为从 1 开始的连续正整数。

有 $Q$ $(1 \leq Q \leq 3 \times 10^5)$ 个询问。每个询问以一个数字开头,格式如下:

  • 1 X Y 表示发生了一场有胜负的对决。X 和 Y 为用户的编号。X 胜,Y 负,保证 X 和 Y 均合法。
  • 2 X Y 与询问 1 相同,但表示发生了一场平局。
  • 3 X 查询 X 用户当前的等级分,保证 X 合法。

输出格式

对于以 3 开头的查询,输出一个浮点数表示答案,浮点误差应小于 $10^{-3}$。

样例

Input
7
1 1 2
1 1 3
2 2 3
3 1
3 2
1 2 3
3 3
Output
1531.263693
1484.033908
1468.671614

62 人解决,68 人已尝试。

96 份提交通过,共有 205 份提交。

3.0 EMB 奖励。

创建: 7 年,1 月前.

修改: 6 年,4 月前.

最后提交: 1 年,1 月前.

来源: 2017 CCCC 选拔

题目标签