407744: GYM102889 E 群体狂乱
Description
在炉石传说游戏里,有一张牌叫群体狂乱。
![](https://espresso.codeforces.com/1d4720ccfe20b4932ed8e8d593a334417882bf10.png)
它的效果是:使每个随从随机攻击其它随从。
具体来说,我们首先均匀地随机随从的攻击顺序,然后随从按照顺序进行攻击。如果当前随从存活,那么均匀地随机选取一个除当前随从以外的存活的随从,进行攻击;但如果没有其余存活的随从,则跳过,不进行攻击。如果当前随从已经不再存活,则同样跳过,不进行攻击。
现有 n 个随从在场上,第 i 个随从拥有攻击力 atki 和血量 hpi。我们不考虑随从的各种特效,每次攻击时,参与攻击的双方的血量各自减少对方的攻击力。当某个随从的血量小于或等于 0 时,则认为该随从不再存活。
例如:一个 5 攻 2 血的随从攻击一个 1 攻 11 血的随从,之后 5 攻 2 血的随从会变成 5 攻 1 血,而 1 攻 11 血的随从则变成了 1 攻 6 血。
请问一次群体狂乱后,每个随从的存活概率。
Input第一行,一个正整数 n (1 ≤ n ≤ 6),表示随从数。
接下来共 n 行,每行包含两个整数 atki, hpi (0 ≤ atki ≤ 106, 1 ≤ hpi ≤ 106),分别为第 i 个随从的攻击力和血量。
Output一共输出 n 行,每一行一个小数,第 i 行输出表示第 i 个随从存活的概率。
若所有输出的值与标准答案的绝对误差或相对误差在 10 - 6 之内,则认定输出正确。具体地说,假设对于某个输出的值,你给出的答案为 a,而标准答案为 b,则你的答案被认为正确,当且仅当 。
3 1 1 1 1 1 1Output
0.333333333333 0.333333333333 0.333333333333Input
2 2 6 3 3Output
0.000000000000 0.000000000000Input
2 1 7 3 3Output
1.000000000000 1.000000000000Input
3 0 1 0 2 1 1Output
0.208333333333 0.583333333333 1.000000000000Note
即使随从只有 0 点攻击力,它也会主动去攻击一个目标,但是它不能对对方造成伤害,只会挨打。
一个死去的随从主动尝试攻击会被跳过;场上只有一个随从时攻击会被跳过。
在第一个样例中,第一个进行攻击的随从会与随机另一个互相消灭,之后剩下的两次攻击均被跳过。所以每一个随从都有 的概率存活。
在第二个样例中,一种情况是第一个随从先攻击第二个随从,然后第二个随从攻击第一个随从,双方都不再存活;另一种情况是第二个先攻击第一个、第一个再攻击第二个,这样两个随从也都无法存活。
在第三个样例中,无论谁先攻击,最后两者都剩余 1 血,即均存活。