CF248E Piglet's Birthday
题目描述
小猪今天过生日。他的朋友维尼熊想为他准备一个最好的礼物——一罐蜂蜜。当然,维尼也明白,他不太可能把满满一罐蜂蜜带给小猪。实际上,他很可能把罐子里的蜂蜜都吃光。既然维尼计划在路上吃一顿,所以罐子最初应该有尽可能多的蜂蜜。
前一天,维尼熊补充了蜂蜜的储备。他家里有 $n$ 层蜂蜜架,每层架子上放着一些蜂蜜罐,可能为零。在一天的时间里,维尼来到蜂蜜架前 $q$ 次;在第 $i$ 次,他来到第 $u_{i}$ 层架子,从上面取走 $k_{i}$ 个蜂蜜罐,尝过每一罐的蜂蜜后,将这些罐子都放到第 $v_{i}$ 层架子上。选择罐子的过程中,维尼全凭直觉。也就是说,在所有取 $k_{i}$ 个罐子的方案中,每种方案被选择的概率是相等的。
现在,维尼还记得自己与蜂蜜罐有关的每一个操作。他想带到聚会上一罐前一天没尝过的蜂蜜。为此,他必须知道,所有架子中没有一个未经尝试蜂蜜罐的架子的期望数量 $m$。为了更好地评估自己的机会,维尼希望知道每一步操作后 $m$ 的值。
你的任务是编写一个程序,帮他算出每一步操作后 $m$ 的值。
输入格式
输入的第一行为一个整数 $n$($1 \leq n \leq 10^{5}$),表示维尼家的蜂蜜架层数。第二行为 $n$ 个整数 $a_{i}$($1 \leq i \leq n$,$0 \leq a_{i} \leq 100$),表示第 $i$ 层架子上的蜂蜜罐数量。
接下来一行是整数 $q$($1 \leq q \leq 10^{5}$),表示维尼前一天的操作次数。之后有 $q$ 行,每行描述一个事件,包含三个整数 $u_{i}$、$v_{i}$、$k_{i}$($1 \leq u_{i},v_{i} \leq n$,$1 \leq k_{i} \leq 5$),表示维尼从 $u_{i}$ 架上取出 $k_{i}$ 个罐子,尝完后把这些罐子放到 $v_{i}$ 架上。
假设蜂蜜架的编号为 $1$ 到 $n$。保证每次维尼取罐子时,取的数量不会超过该架上现有的罐子数量。
输出格式
对于每一次维尼的操作,输出当前所有架子上没有“一罐未经尝试蜂蜜”的架子的数量的期望值 $m$。每个值的相对误差或绝对误差不超过 $10^{-9}$。
说明/提示
由 ChatGPT 5 翻译