poj1017 模拟
2016-02-21 22:39
344 查看
题意:一个工厂制造的产品形状都是长方体,它们的高度都是h,长和宽都相等,一共有六个型号,他们的长宽分别为 1*1, 2*2, 3*3, 4*4, 5*5, 6*6. 这些产品通常使用一个6*6*h的长方体包裹包装然后邮寄给客户。因为邮费很贵,所以工厂要想方设法的减小每个订单运送时的包裹数量。他们很需要有一个好的程序帮他们解决这个问题从而节省费用。
输入:输入文件包括几行,每一行代表一个订单。每个订单里的一行包括六个整数,中间用空 格隔开,分别为 1*1 至6*6 这六种产品的数量。输入文件将以 6个0组成的一行结尾。
输出:最少包裹数
难度:*
算法:模拟
1.对f个6*6的产品,需要f个箱子
2.对e个5*5的产品,需要e个箱子,另外还能放11个1*1的产品
3.对d个4*4的产品,需要d个箱子,另外还能放5个2*2的产品
4.对c个3*3的产品,需要ceil(c/3.0)个箱子,另外,
如果 c%3 == 0,箱子完全使用,无剩余
如果 c%3 == 1,箱子还能放5个2*2的产品
如果 c%3 == 2,箱子还能放3个2*2的产品
如果 c%3 == 3,箱子还能放1个2*2的产品
5.对b个2*2的箱子,由3和4可算出能可存放的个数,如果不能完全放下,再计算还需要多少个新的箱子
6.对a个1*1的箱子,使用面积法:总面积为36*n(n为前5步算出的箱子数),已用面积为36*f+25*e+16*d+9*c+4*b,
用总的面积减去已用面积,可知已用的箱子中还能存放多少个1*1的产品,如果不能完全放下,再计算还需要多少个新的箱子。
输入:输入文件包括几行,每一行代表一个订单。每个订单里的一行包括六个整数,中间用空 格隔开,分别为 1*1 至6*6 这六种产品的数量。输入文件将以 6个0组成的一行结尾。
输出:最少包裹数
难度:*
算法:模拟
1.对f个6*6的产品,需要f个箱子
2.对e个5*5的产品,需要e个箱子,另外还能放11个1*1的产品
3.对d个4*4的产品,需要d个箱子,另外还能放5个2*2的产品
4.对c个3*3的产品,需要ceil(c/3.0)个箱子,另外,
如果 c%3 == 0,箱子完全使用,无剩余
如果 c%3 == 1,箱子还能放5个2*2的产品
如果 c%3 == 2,箱子还能放3个2*2的产品
如果 c%3 == 3,箱子还能放1个2*2的产品
5.对b个2*2的箱子,由3和4可算出能可存放的个数,如果不能完全放下,再计算还需要多少个新的箱子
6.对a个1*1的箱子,使用面积法:总面积为36*n(n为前5步算出的箱子数),已用面积为36*f+25*e+16*d+9*c+4*b,
用总的面积减去已用面积,可知已用的箱子中还能存放多少个1*1的产品,如果不能完全放下,再计算还需要多少个新的箱子。
#include<iostream> #include <math.h> using namespace std; int main() { int a,b,c,d,e,f; int m[4] = {0,5,3,1}; while (cin >> a >> b >> c >> d >> e >> f) { if (a+b+c+d+e+f == 0) { break; } int n = 0; n += f; // 6*6 n += e; // 5*5 n += d; // 4*4 n += ceil(double(c/4.0)); // 3*3 int x = d*5 + m[c%4]; // 已选用箱子剩余2*2位置的个数 if (b > x) // 2*2 { n += ceil(double(b-x)/9.0); // 还需要多少个新箱子盛放2*2的产品 } int y = 36*n - 36*f - 25*e - 16*d - 9*c - 4*b; // 已选用箱子剩余1*1的个数 if (a > y) { n += ceil(double(a-y)/36.0); // 还需要多少个新箱子盛放1*1的产品 } cout << n << endl; } }
相关文章推荐
- 初学ACM - 组合数学基础题目PKU 1833
- POJ ACM 1001
- POJ ACM 1002
- 1611:The Suspects
- POJ1089 区间合并
- POJ 2635 The Embarrassed Cryptographe
- POJ 3292 Semi-prime H-numbers
- POJ 2773 HAPPY 2006
- POJ 3090 Visible Lattice Points
- POJ-2409-Let it Bead&&NYOJ-280-LK的项链
- POJ-1695-Magazine Delivery-dp
- POJ1523 SPF dfs
- POJ-1001 求高精度幂-大数乘法系列
- POJ-1003 Hangover
- POJ-1004 Financial Management
- 用单调栈解决最大连续矩形面积问题
- 2632 Crashing Robots的解决方法
- 1573 Robot Motion (简单题)
- POJ 1200 Crazy Search(简单哈希)
- 【高手回避】poj3268,一道很水的dijkstra算法题