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;
}
posted @ 2016-02-27 23:20  &ATM  阅读(176)  评论(0编辑  收藏  举报
……