#ATagc007c. [AGC007C] Pushing Balls

[AGC007C] Pushing Balls

题目描述

NN 个球和 N+1N+1 个洞沿一条直线排列。球从左到右依次编号为 11NN,洞从左到右依次编号为 11N+1N+1。第 ii 个球被放置在第 ii 个洞和第 i+1i+1 个洞之间。将相邻的洞和球之间的距离从左到右依次记为数列 did_i1i2N1 \leq i \leq 2N)。已知 d1d_1 的值和参数 xx,并且对于任意 ii2i2N2 \leq i \leq 2N),都有 didi1=xd_i - d_{i-1} = x

现在考虑将这 NN 个球依次滚动,使其掉入洞中。球经过某个洞上方时,如果该洞还没有其他球落入,则球会掉入该洞;如果该洞已经有球,则球不会掉入,继续滚动。(在本题的滚动方式下,球之间不会发生碰撞。)

每次滚动时,从尚未滚动的球中等概率随机选择一个球,并以等概率向左或向右滚动。重复 NN 次,直到所有球都被滚动。请计算所有球移动距离总和的期望值。

以下是 N=3N=3d1=1d_1=1x=1x=1 时的一个滚动示例:

c9264131788434ac062635a675a785e3.jpg

  1. 将第 22 个球向左滚动。球会掉入第 22 个洞,移动距离为 33
  2. 将第 11 个球向右滚动。球会经过第 22 个洞上方,最终掉入第 33 个洞,移动距离为 99
  3. 将第 33 个球向右滚动。球会掉入第 44 个洞,移动距离为 66

在这个例子中,所有球移动距离的总和为 1818

无论如何滚动,所有球最终都会掉入某个洞,最后会剩下一个空洞。

输入格式

输入为一行,包含三个整数:

NN d1d_1 xx

输出格式

输出答案,要求为小数。绝对误差或相对误差需在 10910^{-9} 以内。

样例 1

输入

1 3 3

输出

4.500000000000000

样例 2

输入

2 1 0

输出

2.500000000000000

样例 3

输入

1000 100 100

输出

649620280.957660079002380

说明/提示

限制

  • 1N200, ⁣0001 \leq N \leq 200,\!000
  • 1d11001 \leq d_1 \leq 100
  • 0x1000 \leq x \leq 100
  • 所有输入值均为整数。

样例解释 1

11 个球,22 个洞。球到左侧洞的距离为 33,到右侧洞的距离为 66。球可以向左或向右滚动,共 22 种方式,移动距离分别为 3, 63,\ 6。因此答案为 (3+6)/2=4.5(3+6)/2 = 4.5

由 ChatGPT 4.1 翻译