CF442B Andrey and Problem

题目描述

Andrey 还需要一道题目来举办一场程序设计竞赛。他有 $n$ 个总是愿意帮忙的朋友。他可以请求其中的一些人为竞赛出一道题。Andrey 知道每位朋友出题的概率——即如果他请求这位朋友,这位朋友能出一道题的概率。 请帮助 Andrey 选择要请求的朋友集合。由于他只需要一道题,如果没有人出题,或者超过一人出题,Andrey 都会感到失望。你需要选择一个朋友的集合,使 Andrey 不失望的概率最大。

输入格式

第一行包含一个整数 $n$ $(1 \leq n \leq 100)$,表示 Andrey 的朋友数量。 第二行包含 $n$ 个实数 $p_i$ $(0.0 \leq p_{i} \leq 1.0)$,表示第 $i$ 位朋友出题的概率。概率保留最多 6 位小数。

输出格式

输出一个实数,表示在最优选择情况下,Andrey 不会失望的最大概率。答案与正确答案的绝对误差不超过 $10^{-9}$ 均视为正确。

说明/提示

在第一个样例中,Andrey 最好的策略是只请求一位最可靠的朋友。 在第二个样例中,Andrey 最好的策略是请求所有朋友出题。那么恰好有一个朋友出题的概率为 $0.1 \cdot 0.8 + 0.9 \cdot 0.2=0.26$。 由 ChatGPT 5 翻译