uva311 - Packets

来源:互联网 发布:js获取当前日期后一天 编辑:程序博客网 时间:2024/04/28 14:16

经典的贪心题目,

先放大的,3x3/4,4x4,5x5,6x6,这些只能占据一个包裹的物品,再放那些小的,,,对于那些小的,先放缝隙,然后在占据新的包裹。

这道以前做过,但是代码太繁琐了,经过精简,代码如下:

#include <cstdio>int pake[7];int main (){    int n, s, ok, tt;    while(1)    {        ok = 0;        for(int i = 1; i <= 6; i++) {scanf("%d",&pake[i]); ok+=pake[i]; }        if(!ok) break;        n = pake[6]+pake[5]+pake[4]+pake[3]/4;        pake[1]-=pake[5]*11;        pake[2]-=pake[4]*5;        if(tt = pake[3]%4)        {            n+=1;            if(tt==1) pake[1]-=7, pake[2]-=5;            else if(tt==2) pake[1]-=6, pake[2]-=3;            else if(tt==3) pake[1]-=5, pake[2]-=1;        }        if(pake[2]<0)        {            pake[1]+=pake[2]*4;            pake[2] = 0;        }        n+=pake[2]/9;        if(pake[2]%9)        {            n+=1;            pake[1]-=36-(pake[2]%9*4);        }        if(pake[1]>0)        {            n+=pake[1]/36;            if(pake[1]%36)  n+=1;        }        printf("%d\n",n);    }    return 0;}


原创粉丝点击