[17 提高 1] 斯

[17 提高 1] 斯

题意

按题目的要求选出几个人赌,因为硬币只有正反两种情况,取这两种情况盈利的最小值所有方案中的最大值。

尝试1

暴力:先确定和几个人赌,再确定和那几个人,用组合的公式估一下肯定会爆,不能拿全分

尝试2

用动态规划的思想做设数组f[ i ] 到第几个人的最好方案,那么每加入一个人,原先最好的方案加上这个人未必是最好的方案,还是要枚举,所以动态规划也不便捷。

STD

不难发现, 如果我们知道正反面分别和几个庄家下了注,我们下的注一定是收益

最多的几个庄家, 所以我们可以把两组庄家按照收益从大往小排序, 那么每一边的收益一

定是一个前缀和。 这样我们可以通过枚举左右各取了几个, O( N 2 N^2 N2)的计算答案。

考虑加速这个过程,假设较小的收益是第一组庄家的前缀,我们可以从小往大枚举

第一组取的个数,然后在右边找到要超过这个收益,最少要和几个庄家下注,这个可以用一

个指针来扫。 这样我们可以在排完序之后线性时间内做完此题, 复杂度 O(NlogN), 瓶

颈在于排序, 如果采用桶排序可以做到 O(N)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值