首页 > 代码库 > poj 1017(贪心)
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", N);16 }17 return 0;18 }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。