QOJ.ac

QOJ

时间限制: 1.0 s 内存限制: 1024 MB 总分: 100 可 Hack ✓

#9780. 拒绝采样

统计

Bobo 想要使用拒绝采样算法来构造一个大小为 $k$ 的随机集合 $T \subset \{1, 2, \dots, n\}$。对于参数 $p_1, p_2, \dots, p_n$ ($0 \le p_i \le 1$) 和整数 $k$,拒绝采样器定义如下:

  1. 初始化 $T \leftarrow \emptyset$;
  2. 对于每个 $i$ ($1 \le i \le n$),以概率 $p_i$ 将 $i$ 加入 $T$;
  3. 如果 $T$ 的大小恰好为 $k$,则输出 $T$;否则,重复上述过程。

现在给定整数 $a_1, a_2, \dots, a_n$ 和 $k$。Bobo 需要设置参数 $p_1, p_2, \dots, p_n$ 满足:

  • $\sum_{i=1}^n p_i = k$;
  • 对于所有满足 $|S| = k$ 的 $S \subseteq \{1, 2, \dots, n\}$,拒绝采样器输出 $S$ 的概率与 $\prod_{i \in S} a_i$ 成正比。

你的任务是为 Bobo 找出参数 $p_1, p_2, \dots, p_n$。保证这样的参数存在且唯一。如果每个 $p_i$ 与唯一正确答案的绝对误差不超过 $10^{-6}$,则你的答案被视为正确。

输入格式

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

输出格式

输出 $n$ 行。第 $i$ 行包含一个实数 $p_i$。 如果你的答案为 $a$,标准答案为 $b$,则当且仅当对于所有参数满足 $|b - a| \le 10^{-6}$ 时,你的答案被接受。

样例

样例输入 1

3 2
5 5 5

样例输出 1

0.666666666667
0.666666666667
0.666666666667

样例输入 2

2 1
1 4

样例输出 2

0.333333333333
0.666666666667

样例输入 3

4 2
1 2 3 4

样例输出 3

0.310035697652
0.473324044845
0.574114878920
0.642525378583

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.