edu117 EG
E. Messages
考虑每个人对总期望值的贡献:设一共选了 \(a\) 条 message,集合用 \(S\) 表示。那么第 \(i\) 个学生 \((m_{i}, k_{i})\) 对期望的贡献 \(F_{i}\) :
- \(m_{i} \notin S \rightarrow F_{i}=0\)。
- \(m_{i} \in S\),\(k_{i} \geq a \rightarrow F_{i}=1\)
- \(m_{i} \in S\),\(k_{i} < a \rightarrow F_{i}=\frac{C_{a-1}^{k_{i}-1}}{C_{a}^{k_{i}}} = \frac{k_{i}}{a}\)
考虑固定 \(a\),如何分配这 \(a\) 条 message 可以使 \(\sum_{i=1}^{n} F_{i}\) 最大:由期望的独立性,在对期望求和时,我们可以将所有学生对总期望的贡献转化成每种 message 对总期望的贡献。于是,我们可以对每一种 message 计算其对答案的贡献,并贪心地取贡献值前 \(a\) 大的 message 作为方案。
复杂度分析:需要枚举 message 的数量 \(a \in [1,n]\),每一种情况需要计算每名学生的 \(F_{i}\),也是 \(O(n)\) 的,总复杂度至少是 \(O(n^{2})\),肯定不行。考虑如何优化。
注意题目的特殊之处:\(k_{i} \leq 20\)。那么我们想:如果 \(a>20\),那么所有 \(F_{i}\) 必然小于 \(1\),也就意味着 每种 message 的总期望只与选择它的所有学生的 \(k_{i}\) 之和有关(因为分母 \(a\) 大于 \(\forall k_{i}\),总贡献可以等价于分子)。若 \(a=21\),则相当于需要新加入一种 message,对于原来所有的 message 的总期望会变为原来的 \(\frac{20}{21}\);而我们选取 message 会按照其对总期望的贡献从大到小取,这里就会等价于按照其 \(k_{i}\) 的总和从大到小取,那么新加入的这种 message 的 \(k_{i}\) 之和一定 \(\leq\) 前 \(20\) 种 message 中的任意一种的 \(k_{i}\) 之和,进而新加入的这种 message 的 \(k_{i}\) 之和一定 \(\leq\) 前 \(20\) 种 message 的 \(k_{i}\) 之和的平均值,即使多了这份新贡献,由于分母的增大,此时的总贡献也一定不会超过 \(a=20\) 时的总贡献。\(a>21\) 时同理。于是,我们就可以只枚举 \(a\leq 20\) 的所有情况并取最优解,复杂度 \(O(20*n\log n)\)。
G. Max Sum Array
待补。。。

浙公网安备 33010602011771号