[题解]CodeForces442B Andrey and Problem

传送门

题目描述

给出大小为\(n\)的数组\(p,0\leq p_i \leq 1\),定义一个子序列的权值为

\(\sum_i p_i*\prod_{j\neq i}(1-p_j)\)

求最大的权值

\((1\leq n \leq 100)\)

分析

首先,如果有\(p_i=1\),那么答案为1,否则:

对于当前的一个集合,考虑向其中加入元素\(u\)会使得它更优,那么有:

\(\sum_{i}p_i*\prod_{j\neq i}(1-p_j)<(1-p_u)*\sum p_i*\prod_{j\neq i}(1-p_j)+p_u*\prod (1-p_i)\)

化简之后可以得到

\(\sum \frac{p_i}{1-p_i}<1\)

然后再考虑对于两个元素,先加哪一个更优,自己推一波可以发现先加\(p\)值较大的更优。那么从大到小加就可以了

posted @ 2019-11-11 15:09  硫氯  阅读(90)  评论(0编辑  收藏  举报