poj 1017(贪心)

【题目大意

题目大意是这样的:某工厂生产几种产品,首先用packet包住,这些产品的高度都是h,底面积有1*1,2*2,3*3,4*4,5*5,6*6六种规格,下面我们要用高度为h,底面积为6*6的集装箱装这些货物,问怎样使所用集装箱数目最少?

解题思路

我们首先必须先装底面积大的货物,并且对于面积为4*4,5*5,6*6的货物,每一件都需要一个独立的集装箱。对于底面积为3*3的货物,每四个需要一个集装箱。

那么我们可以得知对于装了底面积为3*3的货物的集装箱,其剩余可以装5,3,1个底面积为2*2的货物。对于装了底面积为4*4的集装箱,其剩余空间可以装5个2*2的货物。对于装了底面积为5*5的集装箱,其剩余可以装11个底面积为1*1的集装箱。我们可以通过计算剩余的空间进而求得最小数目。

AC代码

 1 #include <stdio.h>
 2 int  main()
 3 {
 4  int N, a, b, c, d, e, f, y, x;
 5  int u[4]={0, 5, 3, 1};
 6  while(1)
 7  {
 8   scanf("%d%d%d%d%d%d", &a, &b, &c, &d, &e, &f);
 9   if (a == 0 && b == 0 && c == 0 && d == 0 && e == 0 && f == 0) break;
10   N = f + e + d + (c + 3) / 4;//向上取整
11   y = 5 * d + u[c % 4];
12   if(b > y) N += (b - y + 8 ) / 9;
13   x = 36 * N - 36 * f - 25 * e - 16 * d - 9 * c - 4 * b;
14   if(a > x) N += ( a - x + 35 ) / 36;
15   printf("%d
", N);
16  }
17  return 0;
18 }
原文地址:https://www.cnblogs.com/khbcsu/p/3884590.html