POJ 1017 Packets-装格子 (简单贪心)

http://poj.org/problem?id=1017

1.题意:

一个工厂制造的产品形状都是长方体盒子,它们的高度都是 h,长和宽都相等,一共有六个型号,分别为1*1, 2*2, 3*3, 4*4, 5*5, 6*6。

这些产品通常使用一个 6*6*h 的长方体箱子包装然后邮寄给客户。因为邮费很贵,所以工厂要想方设法的减小每个订单运送时的箱子数量BoxNum。

2.解题思路:

由于盒子和箱子的高均为h,因此只需考虑底面积的空间。

6*6的盒子,每个盒子独占一个箱子。

5*5的盒子,每个盒子放入一个箱子,该箱子的剩余空间允许放入的最大尺寸为1*1,且最多放11个。

4*4的盒子,每个盒子放入一个箱子,该箱子的剩余空间允许放入的最大尺寸为2*2。

3*3的盒子,每4个刚好独占一个箱子,不足4个3*3的,剩下空间由2*2和1*2填充。

2*2的盒子和1*1的盒子主要用于填充其他箱子的剩余空间,填充后的多余部分才开辟新箱子装填。

#include<stdio.h>
int main(){
    int n,a,b,c,d,e,f,x,y;
    int u[4]={0,5,3,1};
    while(1){
        scanf("%d%d%d%d%d%d",&a,&b,&c,&d,&e,&f);
        if(a==0&&b==0&&c==0&&d==0&&e==0&&f==0)
            break;
        n=d+e+f+(c+3)/4;
        y=5*d+u[c%4];
        if(b>y)
            n+=(b-y+8)/9;
        x=36*n-36*f-25*e-16*d-9*c-4*b;
        if(a>x)
            n+=(a-x+35)/36;
        printf("%d\n",n);
    }
    return 0;
}
时间: 2024-08-05 20:21:51

POJ 1017 Packets-装格子 (简单贪心)的相关文章

poj 1017 Packets 裸贪心

Packets Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 43189   Accepted: 14550 Description A factory produces products packed in square packets of the same height h and of the sizes 1*1, 2*2, 3*3, 4*4, 5*5, 6*6. These products are alway

POJ 3069 Saruman&#39;s Army (简单贪心)

Saruman's Army Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 5343   Accepted: 2733 Description Saruman the White must lead his army along a straight path from Isengard to Helm's Deep. To keep track of his forces, Saruman distributes se

POJ 1017 Packets【贪心】

POJ 1017 题意: 一个工厂制造的产品形状都是长方体,它们的高度都是h,长和宽都相等,一共有六个型号,他们的长宽分别为 1*1, 2*2, 3*3, 4*4, 5*5, 6*6.  这些产品通常使用一个  6*6*h的长方体包裹包装然后邮寄给客户.因为邮费很贵,所以工厂要想方设法的减小每个订单运送时的包裹数量.他们很需要有一个好的程序帮他们解决这个问题从而节省费用.现在这个程序由你来设计.输入数据输入文件包括几行,每一行代表一个订单.每个订单里的一行包括六个整数,中间用空格隔开,分别为 1

贪心 —— POJ 1017 Packets

对应POJ题目:点击打开链接 Packets Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 46584   Accepted: 15752 Description A factory produces products packed in square packets of the same height h and of the sizes 1*1, 2*2, 3*3, 4*4, 5*5, 6*6. These pro

贪心/poj 1017 Packets

1 #include<cstdio> 2 #include<cstring> 3 using namespace std; 4 5 int main() 6 { 7 int a1,a2,a3,a4,a5,a6; 8 scanf("%d%d%d%d%d%d",&a1,&a2,&a3,&a4,&a5,&a6); 9 while ((a1+a2+a3+a4+a5+a6)!=0) 10 { 11 int ans=a6+a5

POJ 1017 Packets

这题可能是用贪心思想来写的,具体是不是我也不知道,自己对贪心也不是太清楚.之前好像写过,当时似乎没有写出来,不过,这次一下就有了思路.本来是想先装小的包裹,可是试了一下不行,有问题:于是改为先装大的包裹,如果有多余,再装小的,每次都这样,直到所有的包裹被装完为止.试了试,感觉没有什么问题. 代码写的可能有的乱,不过思路还是清楚的. #include<cstdio> #include<iostream> #include<cstring> #include<algo

POJ 2370 Democracy in danger(简单贪心)

Democracy in danger Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 3388   Accepted: 2508 Description In one of the countries of Caribbean basin all decisions were accepted by the simple majority of votes at the general meeting of citize

POJ 1017 Packets(积累)

[题意简述]:这个是别人的博客,有清晰的题意描述,和解题思路,借助他的想法,可以很好的解决这个问题! [分析]:贪心?模拟?见代码 //216K 16Ms #include<iostream> using namespace std; int main() { int ans,a,b,c,d,e,f,Two,One;// 其中Two表示2*2的个数,同理One表示1*1的个数. int u[4] = {0,5,3,1}; while(1) { cin>>a>>b>

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个底面

POJ 2393 Yogurt factory(简单贪心)

http://poj.org/problem?id=2393 题意:任务规定,一个酸奶制造厂,在n个星期内,分别要向外提供y[i]unit的酸奶.已知这个制造厂第i周制造每unit酸奶的费用为c[i],储存室储存每1unit酸奶1星期的费用为s.问要完成这个任务的最小费用是多少. . . . . . . . . . . . . . 思路:简单贪心.维护一个目前最优的代价minc = min(c, minc + s),然后求和. #include <iostream> using namespa