Neo-Robin Hood

文章讨论了在一个资源分配问题中,如何对人按(m)和(p)值进行排序,以最大化帮助他人的同时保证自身利益。作者解释了固定点(i)后分析最优决策的过程,并指出m+p排序法的原理。最后提到一种更直观的思路,虽然没有详述代码,但强调了策略的自然性。
摘要由CSDN通过智能技术生成

官方题解写的是真菜。。。

但还是解释一下,将人按照\(m\)降序排序之后,我们再固定一个点\(i\),只考虑抢的人来自前\(i\)个,那么前\(i\)个人中剩下的\(i-k\)个人中,一定是都被帮助的,否则如果存在一个啥都没做的人,我们可以选择在当前已经抢了的人当中少选一个人抢,然后去抢这个啥都没做的人,不会遗漏最优的答案空间

然后按照\(m+p\)排序的原因如下:我们主要是考虑如何将前面\(i\)个人分成两个交集为空的集合,其中一个集合\(A\)全抢,另一个集合\(B\)全帮,那么剩下的钱就是\(\sum_{i∈A} m_i-\sum_{i∈B} p_i\),显然要这个值越大越好,我们加上抢的人的\(p\),再在最终的结果减去,即\(\sum_{i∈A} (m_i+p_i)-\sum_{i∈B} p_i-\sum_{i∈A} p_i\),化简就是\(\sum_{j∈A} (m_j+p_j)-\sum_{j=1}^{i}p_j\),当\(i\)的时候后面一个是常量,所以最大化前面一个就好了

代码的细节比较多,可以看一下

但是下面这个思路其实更自然

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值