CF1575F.Finding Expected Value
省选/NOI-
通过率:0%
时间限制:3.00s
内存限制:512MB
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
Mr. Chanek opened a letter from his fellow, who is currently studying at Singanesia. Here is what it says.
Define an array b (0≤bi<k) with n integers. While there exists a pair (i,j) such that bi=bj, do the following operation:
- Randomly pick a number i satisfying 0≤i<n. Note that each number i has a probability of n1 to be picked.
- Randomly Pick a number j satisfying 0≤j<k.
- Change the value of bi to j. It is possible for bi to be changed to the same value.
Denote f(b) as the expected number of operations done to b until all elements of b are equal.
You are given two integers n and k, and an array a (−1≤ai<k) of n integers.
For every index i with ai=−1, replace ai with a random number j satisfying 0≤j<k. Let c be the number of occurrences of −1 in a. There are kc possibilites of a after the replacement, each with equal probability of being the final array.
Find the expected value of f(a) modulo 109+7.
Formally, let M=109+7. It can be shown that the answer can be expressed as an irreducible fraction qp, where p and q are integers and q≡0(modM). Output the integer equal to p⋅q−1modM. In other words, output such an integer x that 0≤x<M and x⋅q≡p(modM).
After reading the letter, Mr. Chanek gave the task to you. Solve it for the sake of their friendship!
陈克先生收到了一封来自他朋友的信,这位朋友目前正在新迦尼西亚学习。信的内容如下:
定义一个长度为 n 的数组 b(满足 0≤bi<k)。当数组中存在一对下标 (i,j) 使得 bi=bj 时,重复执行以下操作:
- 随机选取一个下标 i,满足 0≤i<n。注意:每个下标 i 被选中的概率均为 n1;
- 随机选取一个整数 j,满足 0≤j<k;
- 将 bi 的值修改为 j。注意:bi 可能被修改为它原来的值。
记 f(b) 为将数组 b 所有元素变为相等所需的操作次数的期望值。
现给定两个整数 n 和 k,以及一个长度为 n 的数组 a(满足 −1≤ai<k)。
对每个满足 ai=−1 的下标 i,将其替换为一个在 [0,k) 范围内均匀随机选取的整数 j。设 c 为数组 a 中 −1 的出现次数,则替换后共有 kc 种可能的数组 a,每种结果出现的概率均等。
求 f(a) 的期望值对 109+7 取模的结果。
形式化地,令 M=109+7。可以证明该答案可表示为最简分数 qp,其中 p 和 q 均为整数,且 q≡0(modM)。请输出整数 p⋅q−1modM。换言之,输出满足 0≤x<M 且 x⋅q≡p(modM) 的唯一整数 x。
读完这封信后,陈克先生把这个任务交给了你。为了维护他们之间的友谊,请解决这个问题!
输入格式
The first line contains two integers n and k (2≤n≤105, 2≤k≤109).
The second line contains n integers a1,a2,…,an (−1≤ai<k).
第一行包含两个整数 n 和 k(2≤n≤105,2≤k≤109)。
第二行包含 n 个整数 a1,a2,…,an(−1≤ai<k)。
输出格式
Output an integer denoting the expected value of f(a) modulo 109+7.
输出一个整数,表示 f(a) 的期望值对 109+7 取模的结果。
输入输出样例
输入#1
2 2 0 1
输出#1
2
输入#2
2 2 0 -1
输出#2
1
输入#3
3 3 0 1 1
输出#3
12
输入#4
3 3 -1 -1 -1
输出#4
11
输入#5
10 9 -1 0 -1 1 1 2 2 3 3 3
输出#5
652419213
输入解题思路,AI测评打分。不知道怎么写?