TOJ 1022 Packets

这个题,说思想的话就是贪心。就是先放最大的,然后把小的塞进去;每过一种,都尽量往里塞。细心就好。。不过还是贡献了2Wa==

#include <iostream>
using namespace std;
int main()
{
    int a[7],tag,sum,temp;
    while(1)
    {
        tag=sum=0;
        for(int i=1;i<=6;i++)
        {
            cin>>a[i];
            if(a[i]==0) tag++;
        }
        if(tag==6) break;
        sum+=a[6];
        sum+=a[5];
        a[1]-=a[5]*11;
        sum+=a[4];
        temp=a[2];
        a[2]-=a[4]*5;
        a[4]-=temp/5;
        if(a[2]<0) a[1]-=(a[4]*20-(temp%5)*4);
        sum+=a[3]/4;
        a[3]%=4;
        if(a[3]!=0)
        {
        sum++;
        a[2]-=(2*(3-a[3])+1);
        a[1]-=8-a[3];
        }
        if(a[2]>0)
        {
        sum+=a[2]/9 ;
        a[2]%=9;
        if(a[2])sum++;
        a[1]-=(36-4*a[2]);
        }
        if(a[1]>0)
        {
            sum+=a[1]/36;
            if(a[1]%36) sum++;
        }

        cout<<sum<<endl;
    }
    return 0;
}


你可能感兴趣的:(TOJ)