首页 > 编程语言 > 详细

出口胡萝卜 (贪心加暴力算法)

时间:2015-11-28 06:28:14      阅读:385      评论:0      收藏:0      [点我收藏+]

题目描述

终于,Nova君饲养的小兔子们成精了,他们可以帮着赚钱啦。春天,兔子们播下胡萝卜的种子;夏天,兔子们耕耘;秋天,兔子们收获硕大无比的胡萝卜;冬天,兔子们把胡萝卜包装好,远销海内外。现在问题来了,Nova君希望削减包装的运输的成本,因而要尽可能少的用包装箱。兔子们种植的胡萝卜很奇葩,他们的长度都为H,但粗细度不一致,为了方便,事先把胡萝卜风干并且切成规则的长方体,规格为AAH,H为长度,A为横切面的边长。假设胡萝卜只有1x1xH,2x2xH,3x3xH, 4x4xH, 5x5xH, 6x6xH这6种规格,通常使用一个 6x6xH的长方体包裹包装然后邮寄给客户。

输入

多组测试数组(组数少于100),对于每组数据,输入一行,为6个正整数(int范围内),分别代表规格为 1x1xH 至6x6xH 这六种胡萝卜的数量。

输出

对于每组数据,输出一行,为所需最少的包裹数。

输入样例

0 0 4 0 0 1   
7 5 1 0 0 0   

输出样例

2
1
题目来源:http://biancheng.love/contest/23/problem/C/index
解题思路:同样采用贪心算法,不过这次的贪心算法很麻烦,但是思路很清晰。(好比做高中数学题)
首先讨论一下我们应该先发哪一种萝卜。
电脑没电了,先给出代码。白天补上详解。
代码:
 1 #include <bits/stdc++.h>
 2 
 3 using namespace std;
 4 int a[7];
 5 
 6 int main()
 7 {
 8     long long ans;
 9     while(~scanf("%d%d%d%d%d%d",&a[1],&a[2],&a[3],&a[4],&a[5],&a[6]))
10     {
11         ans=a[6];
12         if(a[5]>0)
13         {
14             ans=ans+a[5];
15             a[1]=a[1]-11*a[5];
16         }
17         if(a[4]>0)
18         {
19             ans=ans+a[4];
20             if(a[2]>5*a[4])
21                 a[2]=a[2]-5*a[4];
22             else
23             {
24                 a[1]=a[1]-(20*a[4]-4*a[2]);
25                 a[2]=0;
26             }
27         }
28         if(a[3]>0)
29         {
30             if(a[3]%4==0)
31                 ans=ans+a[3]/4;
32             else
33             {
34                 ans=ans+a[3]/4+1;
35                 if(a[3]%4==1)
36                 {
37                     if(a[2]>=5)
38                     {
39                         a[2]=a[2]-5;
40                         a[1]=a[1]-7;
41                     }
42                     else
43                     {
44                         a[2]=0;
45                         a[1]=a[1]-(27-4*a[2]);
46                     }
47                 }
48                 if(a[3]%4==2)
49                 {
50                     if(a[2]>=3)
51                     {
52                         a[2]=a[2]-3;
53                         a[1]=a[1]-6;
54                     }
55                     else
56                     {
57                         a[2]=0;
58                         a[1]=a[1]-(18-4*a[2]);
59                     }
60                 }
61                 if(a[3]%4==3)
62                 {
63                     if(a[2]>=1)
64                     {
65                         a[2]=a[2]-1;
66                         a[1]=a[1]-5;
67                     }
68                     else
69                     {
70                         a[1]=a[1]-9;
71                     }
72                 }
73             }
74         }
75         if(a[1]<0) a[1]=0;
76         if((a[2]*4+a[1])%36==0)
77             ans=ans+(a[2]*4+a[1])/36;
78         else
79             ans=ans+(a[2]*4+a[1])/36+1;
80         printf("%lld\n",ans);
81     }
82 }

 

 

出口胡萝卜 (贪心加暴力算法)

原文:http://www.cnblogs.com/zpfbuaa/p/5002071.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!