您的位置:首页 > 大数据 > 人工智能

TOJ 3031. Containers

2008-08-15 14:49 204 查看
题目大意有n个8X40的集装箱,需要放在一个矩形内。最多可以5个重叠在一块儿,要求集装箱的方向一致,长边之间、长边与矩形边界相距2,短边之间、短边与矩形边界相距4。问使矩形面积最小且尽可能方,输出最优的答案。

分析可以考虑枚举所有情况,但是n的范围是1012如果硬暴必然超时。注意到,某组解的每行每列个数x,y交换之后又是一组解,那么只需要考虑x<=y的情况,根据x,y算出两组边长和面解来更新结果。即可,复杂度降到106应该没有问题了。另外,需要使用long long。

1         for(x=1;x<=n;x++)

2         {

3             y=(n+x-1)/x;

4             if(y<x)

5                 break;

6             X=44*x+4;

7             Y=10*y+2;

8             A=X*Y;

9             if(A<rea ||( A==rea && abs(X-Y)<abs(rex-rey)))

{

rea=A;

rex=X;

rey=Y;

}

X=44*y+4;

Y=10*x+2;

A=X*Y;

if(A<rea || (A==rea && abs(X-Y)<abs(rex-rey)))

{

rea=A;

rex=X;

rey=Y;

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: