您的位置:首页 > 其它

POJ1017 Packets

2013-07-31 15:07 260 查看
题目来源:http://poj.org/problem?id=1017

题目大意:

  某工厂有不同型号的货物要装箱。所有货物的高度都为h,底面大小分别为1*1,2*2,3*3,4*4,5*5,6*6.这些货物都要被装进高为h,底面6*6的盒子中。工厂希望用最少数目的箱子打包所有的货物。

输入:由多组数据组成,每行一组。各数分别表示1*1,2*2,3*3,4*4,5*5,6*6货物的个数。6个0代表结束。

输出:每行对应一个输入,输出一个整数,表示需要的最少的箱子数。

Sample Input

0 0 4 0 0 1
7 5 1 0 0 0
0 0 0 0 0 0

Sample Output

2
1


模拟水过,见代码。

#include<stdio.h>
int main()
{
int n,a,b,c,d,e,f,x,y;
int u[4]={0,5,3,1};
while(1)
{
scanf("%d%d%d%d%d%d",&a,&b,&c,&d,&e,&f);
if(a==0&&b==0&&c==0&&d==0&&e==0&&f==0)
break;
n=d+e+f+(c+3)/4;//懂了
y=5*d+u[c%4];//在已有n个的情况下,能装下y个2*2的
if(b>y)
n+=(b-y+8)/9;//把多的2*2的弄进来
x=36*n-36*f-25*e-16*d-9*c-4*b;
if(a>x)
n+=(a-x+35)/36;//把1*1的弄进来
printf("%d\n",n);
}
return 0;
}


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