USACO Section 1.4 Packing Rectangles

题意:

已知4个矩形的l和w  矩形可以旋转和平移  用一块最小面积的新的矩形覆盖4个矩形

求最小的面积  以及新矩形的l和w


思路:

题目已经给出6种摆放方式  按它的方式摆即可

我们要枚举4个矩形是否旋转(只转90度)过  然后枚举每种摆放方式中矩形的编号

代码中的枚举方法是二进制枚举旋转  全排列枚举编号

最后计算所有情况中的答案

第6种摆放方式比较难想  大致思路就是  先放下面两块  在根据下面两块的高度分别讨论上面两块如何摆放


/*
ID: housera1
PROG: packrec
LANG: C++
*/
#include
#include
#include
using namespace std;

struct rectangle
{
	int l,w;
}f[5];
pair sol[5005];
int n,ans=2147483640;
int order[5];

int main(){
	int Debug=0;
	if(!Debug){
		freopen("packrec.in","r",stdin);
		freopen("packrec.out","w",stdout);
	}
	int i,j,x,y;
	for(i=0;i<4;i++) scanf("%d%d",&f[i].l,&f[i].w);
	for(i=0,n=0;i<16;i++)
	{
		for(j=0;j<4;j++) if(i&(1<y) swap(x,y);
				sol[n++]=make_pair(x,y);
			}
			x=max(f[order[0]].w,f[order[1]].w+f[order[2]].w+f[order[3]].w);
			y=f[order[0]].l+max(f[order[1]].l,max(f[order[2]].l,f[order[3]].l));
			if(x*y<=ans)
			{
				if(x*yy) swap(x,y);
				sol[n++]=make_pair(x,y);
			}
			x=max(f[order[0]].w,f[order[1]].w+f[order[2]].w)+f[order[3]].w;
			y=max(f[order[0]].l+max(f[order[1]].l,f[order[2]].l),f[order[3]].l);
			if(x*y<=ans)
			{
				if(x*yy) swap(x,y);
				sol[n++]=make_pair(x,y);
			}
			x=f[order[0]].w+max(f[order[1]].w,f[order[2]].w)+f[order[3]].w;
			y=max(f[order[0]].l,max(f[order[1]].l+f[order[2]].l,f[order[3]].l));
			if(x*y<=ans)
			{
				if(x*yy) swap(x,y);
				sol[n++]=make_pair(x,y);
			}
			x=max(f[order[0]].w,f[order[1]].w)+f[order[2]].w+f[order[3]].w;
			y=max(f[order[0]].l+f[order[1]].l,max(f[order[2]].l,f[order[3]].l));
			if(x*y<=ans)
			{
				if(x*yy) swap(x,y);
				sol[n++]=make_pair(x,y);
			}
			if(f[order[1]].l==f[order[2]].l) x=max(f[order[1]].w+f[order[2]].w,f[order[0]].w+f[order[3]].w);
			else if(f[order[1]].lf[order[2]].l) x=max(f[order[1]].w+f[order[2]].w,f[order[3]].w+max(f[order[0]].w,f[order[1]].w));
			y=max(f[order[0]].l+f[order[1]].l,f[order[2]].l+f[order[3]].l);
			if(x*y<=ans)
			{
				if(x*yy) swap(x,y);
				sol[n++]=make_pair(x,y);
			}
		}while(next_permutation(order,order+4));
		for(j=0;j<4;j++) if(i&(1<


你可能感兴趣的:(USACO,搜索,杂题)