我多么希望这道题完全是我自己想出来的。。。
开始想的是用数组模拟贪心的过程,但写的时候发现会很复杂,写出来速度也会很慢。。。当时就觉得这题的难度瞬间提升一个等级,比单纯的模拟还难。。。所以我就去搜解题报告了。一看才发现这个问题其实不复杂,只需考虑很少的东西就可以了。。唉,我真应该自己所多想想,我是太害怕和以前一样一道题调一天还是调不出来。。我真是应该坚持下去的。。。
4、5、6尺寸的product直接放一个箱子,5用1补,4优先用2补,因为到最后1可以用来补2,3取余后要分类考虑。到最后如果2小于0,1大于0,就用1去补2,2和1小于0的情况就不用管了。。。
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int main()
{
int all,i,j,t,a,b,c,d,e,f;
while(scanf("%d %d %d %d %d %d",&a,&b,&c,&d,&e,&f)&&a+b+c+d+e+f)
{
all=0;
all+=(d+e+f);
a-=(11*e),b-=(5*d);;
all+=c/4;
i=c%4;
if(i==1)
{
all++;
b-=5,a-=7;
}
else if(i==2)
{
all++;
b-=3,a-=6;
}
else if(i==3)
{
all++;
b-=1,a-=5;
}
if(b>0)
{
all+=(b/9);
if(b%9!=0)
{
all++;
a-=(36-(b%9)*4);
}
}
if(a>0)
{
if(b<0)
a+=b*4;
}
if(a>0)
{
all+=a/36;
if(a%36!=0)
all++;
}
printf("%d\n",all);
}
return 0;
}