奶牛飞盘

这是一篇关于解决奶牛叠在一起取高处飞盘问题的博客。题目描述了有n头奶牛,每头有重量、高度和强壮度,目标是判断奶牛们能否叠起来达到飞盘的高度并承受额外的重量。文章提出了贪心策略,并通过DFS搜索找到可行解,以确定最大可承受重量。
摘要由CSDN通过智能技术生成

题目:

有n(2<=n<=20)头奶牛在玩飞盘,可是飞盘飞到了高处。现在他们要想办法叠在一起,去取飞盘。飞盘的高度为H(1 <= H <= 1,000,000,000)。给出每头奶牛的重量、高度、强壮度(能够承受的重量),问他们是否够得到,如果能够取到,求它们额外还能承受最多多少重量。(要保证每头奶牛所承受的重量都不超过它的强壮度)。

思路:

先不管,我们可以把暴力思想想出来.......

再来,我们可以用贪心的思想想一下:

比如,现在已经有许多奶牛叠加在一起,我们需要选择A,B (强壮度分别是va,vb),设现在这叠奶牛还可承受sum的重量,

若a放在b下面:

 min(sum-wa ,va)> wb

否则:

min(sum-wb,vb)>wa

变形一下得:

min(sum,va+wa)

min(sum,vb+wb)

所以若va+wa>vb+wb则a就放在下面。

最后用DFS搜出所有可行解,再统计最大值,可行解最多不超过2^{19}

代码:

#include <iostream>
#include <
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值