uva311 Packets

10 篇文章 0 订阅

我多么希望这道题完全是我自己想出来的。。。

开始想的是用数组模拟贪心的过程,但写的时候发现会很复杂,写出来速度也会很慢。。。当时就觉得这题的难度瞬间提升一个等级,比单纯的模拟还难。。。所以我就去搜解题报告了。一看才发现这个问题其实不复杂,只需考虑很少的东西就可以了。。唉,我真应该自己所多想想,我是太害怕和以前一样一道题调一天还是调不出来。。我真是应该坚持下去的。。。

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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值