USACO s1.4 Packing Rectangles

题目大意:给出4个矩形(1<=任意边长<=50),寻找最小的矩形可以竖直容纳给出的4个矩形.


思路:


pack


有以上6种情况的堆放方式.再通过排列与旋转枚举所有情况.另外,第4第5种计算的结果相同,所以合并为一种情况.所以总共枚举有4! * 2^4 *5 = 1920.(其中有不少重复的情况,如第1种只需枚举1种排列即可).


schema 1 :

[ 0123 ]

wid=wid0+wid1+wid2+wid3 , ht=max(ht0,ht1,ht2,ht3);

schema 2:

[ 012 ]

[ 333 ]

wid=max(wid0+wid1+wid2,wid3) , ht=max(ht0,ht1,ht2)+ht3;

schema 3:

[ 013 ]

[ 223 ]

wid=max(wid0+wid1,wid2)+wid3 , ht=max(wid3,max(wid0,wid1)+wid2);

schema 4/5:

[ 023 ]

[ 123 ]

wid=max(wid0,wid1)+wid2+wid3 , ht=max(ht0+ht1,ht2,ht3);

schema 6:

[ 23 ]

[ 01 ]

wid=max(

wid0+wid1,

wid0+wid3(当 ht0>ht1,否则03无法接触),

wid1+wid2(当 ht1>ht0,否则12无法接触) ,

wid2+wid3(当 ht1+ht3>ht0,否则23无法接触),

wid2,

wid3)

ht=max(ht0+ht2,ht1+ht3).


代码:

//看着usaco的代码写的~~

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值