#jag2017summerday1c. [jag2017summer_day1_c]すごろく

[jag2017summer_day1_c]すごろく

问题文

黑猫小S在玩骰子游戏。

在这个游戏中,他使用的是一个特殊的骰子。这个骰子有 NN 个面,每个面的概率相同,都会出现。第 ii 个面上写着整数 AiA_i,当掷出这个面时,他会前进正好 AiA_i 个格子。

另一方面,游戏板不太特殊。共有 MM 个格子排成一行,第一个格子是起点,第 MM 个格子是终点。第 ii 个格子上写着整数 BiB_i,如果停在这个格子上,则根据 BiB_i 的值会有以下效果:

  • 如果 Bi0B_i \geq 0:前进正好 BiB_i 个格子。但是,不会受到前进后格子上的效果。
  • 如果 Bi<0B_i < 0:休息 Bi-B_i 回合。

那么,小S到达终点所需要的平均回合数是多少呢?

注意,如果小S超过终点继续前进,也会被视为到达终点。

约束条件

  • 1N1051 \leq N \leq 10^5
  • 2M1052 \leq M \leq 10^5
  • 1AiM1 \leq A_i \leq M
  • 10BiM-10 \leq B_i \leq M
  • B1=BM=0B_1 = B_M = 0

输入

输入以以下格式从标准输入中给出。

NN MM A1A_1 A2A_2 ...... ANA_N B1B_1 B2B_2 ...... BMB_M

输出

输出小S到达终点所需要的平均回合数。只需要输出结果,不需要输出单位。


输入例子 1

3 4
1 2 3
0 1 -1 0

输出例子 1

2.00000000000000000000

根据每个回合掷出的点数分别考虑,结果如下:

  • 点数为 11:前进 11 个格子,停在第 22 个格子。根据该格子的效果,继续前进到第 33 个格子。下一回合无论掷出多少点都可以到达终点,因此总共需要 22 回合。
  • 点数为 22:前进 22 个格子,停在第 33 个格子。根据该格子的效果,休息 11 回合。下一回合休息,再下一回合无论掷出多少点都可以到达终点,因此总共需要 33 回合。
  • 点数为 33:前进 33 个格子,停在第 44 个格子。换言之,只需要 11 回合就可以到达终点。

因此,平均回合数为 2/3+3/3+1/3=22/3 + 3/3 + 1/3 = 2


输入例子 2

1 10
1
0 0 0 0 0 0 0 0 0 0

输出例子 2

9.00000000000000177636

输入例子 3

5 6
1 1 2 3 5
0 0 6 -10 1 0

输出例子 3

4.47999999999999953815