CF1575F Finding Expected Value

题目描述

> Chanek 先生打开了一封来自他的朋友的信,这位朋友目前正在 Singanesia 学习。以下是信的内容: 定义一个由 $n$ 个整数组成的数组 $b$ $(0 \le b_i < k)$。只要存在一对 $(i, j)$ 使得 $b_i \ne b_j$,则执行以下操作: - 随机选择一个满足 $0 \le i < n$ 的数字 $b_i$。请注意,每个 $b_i$ 被选择的概率为 $\dfrac 1 n$。 - 随机选择一个满足 $0 \le j < k$ 的数字 $j$。 - 将 $b_i$ 的值更改为 $j$。$b_i$ 可能被更改为相同的值。 将 $f(b)$ 定义为对 $b$ 进行操作直到 $b$ 的所有元素相等的预期操作次数。 给定两个整数 $n$ 和 $k$,以及一个由 $n$ 个整数组成的数组 $a$(其中 $-1 \le a_i < k$)。 对于每个 $a_i = -1$ 的序号 $i$,将 $a_i$ 替换为满足 $0\le j < k$ 的随机数 $j$。设 $c$ 为 $a$ 中 $-1$ 的出现次数。在替换后, $a$ 有 $k^c$种可能的情况,每种情况发生的概率相等,且都有可能成为最终的数组。 找到对 $f(a)$ 取模 $10^9 + 7$ 后的期望值。 更详细地定义,让 $M = 10^9 + 7$。可以证明答案可以表示为一个不可约分数 $\dfrac pq$,其中 $p$ 和 $q$ 是整数,并且 $q\not\equiv 0\pmod M$。输出满足 $0 \le x < M$ 和 $q\cdot x \equiv p \pmod M$ 的整数 $x$。 > 阅读完这封信之后,陈先生把这个任务交给了你。为了他们的友谊,请解决这个问题!

输入格式

第一行输入两个整数 $n$ 和 $k$ $(2\le n\le 10^5,2\le k\le 10^9)$。 第二行输入 $n$ 个整数 $a_1,a_2,...,a_n$ $(-1\le a_i< k)$。

输出格式

输出一个整数表示 $f(a) \bmod {10^9+7}$ 的期望值。