USACO 3.3.3 Packing Rectangles (packrec)(转)

报告:http://starforever.blog.hexun.com/2097115_d.html

 

因为只有4个方块,所以枚举每个方块的选择顺序放置方向(横放还是纵放),放置方式只有题目给出的6种基本模式,分别算出不同模式下最小的面积,更新最优解。

 

 

查看更多精彩图片

 

 

第4、5个在本质上其实是一样。如图,不同模式对应的最小面积如下:

设w1,w2,w3,w4表示4个方块的横长,h1,h2,h3,h4表示4个方块的纵长。w,h表示最小。

1:w=w1+w2+w3+w4;h=max(h1,h2,h3,h4)

2:w=max(w1+w2+w3,w4);h=max(h1,h2,h3)+h4

3:w=max(w1+w2,w3)+w4;h=max(h1+h3,h2+h3,h4)

4:w=w1+w2+max(w3,w4);h=max(h1,h3+h4,h2)

5:h=max(h1+h3,h2+h4)

对于w,我们细分为如下四种形式:

 

 

查看更多精彩图片



(1):h3>=h2+h4;w=max(w1,w3+w2,w3+w4)

(2):h3>h4 and h3<h2+h4;w=max(w1+w2,w2+w3,w3+w4)

(3):h4>h3 and h4<h1+h3;w=max(w1+w2,w1+w4,w3+w4)

(4):h4>=h1+h3;w=max(w2,w1+w4,w3+w4)

*:h3=h4(图中没画);w=max(w1+w2,w3+w4)

用一个数组记录最优解,最后排序输出即可。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值