[17 提高 1] 斯
[17 提高 1] 斯
题意
按题目的要求选出几个人赌,因为硬币只有正反两种情况,取这两种情况盈利的最小值所有方案中的最大值。
尝试1
暴力:先确定和几个人赌,再确定和那几个人,用组合的公式估一下肯定会爆,不能拿全分
尝试2
用动态规划的思想做设数组f[ i ] 到第几个人的最好方案,那么每加入一个人,原先最好的方案加上这个人未必是最好的方案,还是要枚举,所以动态规划也不便捷。
STD
不难发现, 如果我们知道正反面分别和几个庄家下了注,我们下的注一定是收益
最多的几个庄家, 所以我们可以把两组庄家按照收益从大往小排序, 那么每一边的收益一
定是一个前缀和。 这样我们可以通过枚举左右各取了几个, O( N 2 N^2 N2)的计算答案。
考虑加速这个过程,假设较小的收益是第一组庄家的前缀,我们可以从小往大枚举
第一组取的个数,然后在右边找到要超过这个收益,最少要和几个庄家下注,这个可以用一
个指针来扫。 这样我们可以在排完序之后线性时间内做完此题, 复杂度 O(NlogN), 瓶
颈在于排序, 如果采用桶排序可以做到 O(N)