传送门:http://poj.org/problem?id=1017

Packets

Time Limit: 1000MS Memory Limit: 10000K

Total Submissions: 59106 Accepted: 20072

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 always delivered to customers in the square parcels of the same height h as the products have and of the size 6*6. Because of the expenses it is the interest of the factory as well as of the customer to minimize the number of parcels necessary to deliver the ordered products from the factory to the customer. A good program solving the problem of finding the minimal number of parcels necessary to deliver the given products according to an order would save a lot of money. You are asked to make such a program.

Input

The input file consists of several lines specifying orders. Each line specifies one order. Orders are described by six integers separated by one space representing successively the number of packets of individual size from the smallest size 1*1 to the biggest size 6*6. The end of the input file is indicated by the line containing six zeros.

Output

The output file contains one line for each line in the input file. This line contains the minimal number of parcels into which the order from the corresponding line of the input file can be packed. There is no line in the output file corresponding to the last “null” line of the input file.

Sample Input

0 0 4 0 0 1

7 5 1 0 0 0

0 0 0 0 0 0

Sample Output

2

1


解题心得:

  1. 这个题思维还是很简单的,那就是在之前装箱的时候要尽可能的装满,并且要从大的开始装,为啥要这样呢,如果不从大的开始装,那么到了后面,小的用完之后几个大的箱子开始装就会产生空隙,并且没有小的箱子去填满空隙。
  2. 但是还有要注意的地方,这是体积,计算的时候不能按照平面来算,要用体积来计算,写起来非常的烦人,要仔细。其实只有两种装法,从大的开始和从小的开始,想一想也就知道该怎么贪心了。

#include <stdio.h>
#include <algorithm>
using namespace std;
int box[7];
int main() {
while(scanf("%d%d%d%d%d%d",&box[1],&box[2],&box[3],&box[4],&box[5],&box[6]) && (box[1]+box[2]+box[3]+box[4]+box[5]+box[6])) {
int ans = 0;
ans += box[6]; ans += box[5];//5+1
box[1] = max(0, box[1] - box[5] * 11); ans += box[4];//4+2+1
if (box[2] < box[4] * 5) box[1] = max(0, box[1] - (5 * box[4] - box[2]));
box[2] = max(0, box[2] - 5 * box[4]); ans += (box[3] + 3) / 4;//3+2+1
box[3] %= 4;
if (box[3] == 1) {
if (box[2] < 5) box[1] = max(0, box[1] - (27 - 4 * box[2]));
else box[1] = max(0, box[1] - 7);
box[2] = max(0, box[2] - 5);
} else if (box[3] == 2) {
if (box[2] < 3) box[1] = max(0, box[1] - (18 - 4 * box[2]));
else box[1] = max(0, box[1] - 6);
box[2] = max(0, box[2] - 3);
} else if (box[3] == 3) {
if (box[2] < 1) box[1] = max(0, box[1] - (9 - 4 * box[2]));
else box[1] = max(0, box[1] - 5);
box[2] = max(0, box[2] - 1);
} ans += (box[2] + 8) / 9;//2+1
box[2] %= 9; if (box[2])
box[1] = max(0, box[1] - (36 - 4 * box[2])); ans += (box[1] + 35) / 36; printf("%d\n", ans);
}
return 0;
}

POJ:1017-Packets(贪心+模拟,神烦)的更多相关文章

  1. poi 1017 Packets 贪心+模拟

    Packets Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 48349   Accepted: 16392 Descrip ...

  2. Poj 1017 Packets(贪心策略)

    一.题目大意: 一个工厂生产的产品用正方形的包裹打包,包裹有相同的高度h和1*1, 2*2, 3*3, 4*4, 5*5, 6*6的尺寸.这些产品经常以产品同样的高度h和6*6的尺寸包袱包装起来运送给 ...

  3. poj 1017 Packets 贪心

    题意:所有货物的高度一样,且其底面积只有六种,分别为1*1 2*2 3*3 4*4 5*5 6*6的,货物的个数依次为p1,p2,p3,p4,p5,p6, 包裹的高度与货物一样,且底面积就为6*6,然 ...

  4. POJ 1017 Packets【贪心】

    POJ 1017 题意: 一个工厂制造的产品形状都是长方体,它们的高度都是h,长和宽都相等,一共有六个型号,他们的长宽分别为 1*1, 2*2, 3*3, 4*4, 5*5, 6*6.  这些产品通常 ...

  5. poj 1017 Packets 裸贪心

    Packets Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 43189   Accepted: 14550 Descrip ...

  6. UVA 311 Packets 贪心+模拟

    题意:有6种箱子,1x1 2x2 3x3 4x4 5x5 6x6,已知每种箱子的数量,要用6x6的箱子把全部箱子都装进去,问需要几个. 一开始以为能箱子套箱子,原来不是... 装箱规则:可以把箱子都看 ...

  7. POJ 1017 Packets(积累)

    [题意简述]:这个是别人的博客,有清晰的题意描写叙述.和解题思路,借助他的想法,能够非常好的解决问题! [分析]:贪心?模拟?见代码 //216K 16Ms #include<iostream& ...

  8. POJ 1017 Packets

    题意:有一些1×1, 2×2, 3×3, 4×4, 5×5, 6×6的货物,每个货物高度为h,把货物打包,每个包裹里可以装6×6×h,问最少几个包裹. 解法:6×6的直接放进去,5×5的空隙可以用1× ...

  9. POJ 1O17 Packets [贪心]

    Packets Description A factory produces products packed in square packets of the same height h and of ...

随机推荐

  1. $.ajax显示进度条

  2. Html编码(&#数字型)与解码小结 - 针对Puny Code(中文域名)的解码处理

    学习并了解到Html编码的知识,源于工作中的产品需求.如果一个URL里面包含Puny Code(不仅仅指中文,还可能是韩文等Unicode里非英文的国家文字,本文以含中文的URL为例),而且这个URL ...

  3. python模块详解 time与date time

    模块的分类: a:标准库 内置模块 如sys,os等 b:开源模块 大神封装好的 直接可以拿来用的. c:自定义模块 自己封装的模块 Python中通常表示时间的方式有:时间戳.格式化的日期.元组(九 ...

  4. LDAP 在ubuntu14.04下的安装配置install and configure

    https://help.ubuntu.com/lts/serverguide/openldap-server.html if error occurs in reinstall, try this: ...

  5. 关于ubuntu安装软件的问题:apt-get和dpkg区别?

    两者的区别是dpkg绕过apt包管理数据库对软件包进行操作,所以你用dpkg安装过的软件包用apt可以再安装一遍,系统不知道之前安装过了,将会覆盖之前dpkg的安装.1.dpkg是用来安装.deb文件 ...

  6. vue项目里的日期格式化(摘录)

    export function formatDate (date, fmt) { if (/(y+)/.test(fmt)) { fmt = fmt.replace(RegExp.$1, (date. ...

  7. Maven安装以及使用

    maven安装 1.解压maven安装包 2.右键“计算机”,选择“属性”,之后点击“高级系统设置”,点击“环境变量”,来设置环境变量. 3. 新建系统变量 MAVEN_HOME 变量值:C:\apa ...

  8. Linux高性能server编程——定时器

    版权声明:本文为博主原创文章.未经博主允许不得转载. https://blog.csdn.net/walkerkalr/article/details/36869913  定时器 服务器程序通常管 ...

  9. Nginx启用Gzip压缩js无效的原因

    Nginx启用gzip很简单,只需要设置一下配置文件即可完成,可以参考文章Nginx如何配置Gzip压缩功能.不过,在群里常有人提到,他们的网站Gzip压缩虽然成功了,但检测到JS仍然没有压缩成功,这 ...

  10. Getting aCC Error :name followed by "::" must be a class or namespace name"

    Getting aCC Error :name followed by "::" must be a class or namespace name" 原始是这样子的: ...