题目分析
题意
一个工厂生产相同高度h的货物(实心的),尺寸分别为1* 1,2* 2,3* 3,4* 4,5* 5,6* 6。
将这些货物用高度h、尺寸为6*6的包裹装,考虑费用问题,求最少所需的包裹数量。
思路
1个尺寸为6* 6的包裹可以装:
1个6* 6的货物
1个5* 5的货物和11个1* 1的货物
1个4* 4的货物和5个2* 2的货物
4个3* 3的货物。
1* 1,2* 2的货物先填充其他包裹,并且,其他包裹先填充2* 2的货物,再填充1* 1。若有剩,则再添加包裹。
代码
#include<stdio.h>
int x3[4]={0,5,3,1};//一个包裹里装有0,1,2,3个3*3尺寸货物时能装有的2*2尺寸货物的数量
int main(){
//freopen("TXA.txt","r",stdin);
int s1,s2,s3,s4,s5,s6;
while(~scanf("%d%d%d%d%d%d",&s1,&s2,&s3,&s4,&s5,&s6),s1+s2+s3+s4+s5+s6){
int res=s4+s5+s6+(s3+3)/4;//(int)3/4 ==0如果s3的数量是1,+3/4刚好得一个整数
int x2=s4*5+x3[s3%4];//s3%4==装不满3*3尺寸货物的包裹里面3*3尺寸货物的数量
if(s2>x2)
res+=(s2-x2+8)/9;//+8同上
int x1=res*36-s6*36-s5*25-s4*16-s3*9-s2*4;
if(s1>x1)
res+=(s1-x1+35)/36;//+35同上
printf("%d\n",res);
}
return 0;
}