POJ 1017 Packets#贪心
画格子
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; int main() { int res,n,m; int a,b,c,d,e,f; int cc[]={0,5,3,1};//{0,6,4,2}WA,画个6*6的格子模拟一下就知道了 while(scanf("%d%d%d%d%d%d",&a,&b,&c,&d,&e,&f)&&a+b+c+d+e+f) { res=f+e+d+(c+3)/4;//用单独的箱子来装包括3*3以上size的盒子,每箱一盒,剩余的空间由1*1和2*2的来填 //下面来算2*2和1*1在上面的res个箱子装完后还有无剩余 n=5*d+cc[c%4]; if(b>n) res+=(b-n+8)/9; m=36*res-36*f-25*e-16*d-9*c-4*b; if(a>m) res+=(a-m+35)/36; printf("%d\n",res); } return 0; }