博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
poj-1017-packets
阅读量:6758 次
发布时间:2019-06-26

本文共 2560 字,大约阅读时间需要 8 分钟。

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 题目大意:

工厂生产的产品装在方形包的同一高度h和大小的1 * 1,2 * 2,3 * 3,4 * 4,5 * 5,6 * 6。广场上的这些产品总是交付给客户的包裹一样高h的产品和尺寸6 * 6。因为费用是工厂的利益以及客户的包裹需要交付的数量降到最低订购了产品从工厂到客户。一个好的程序解决问题找到所需的最小数量的包裹交付给产品根据订单会省下一大笔钱。你被要求做这样的一个程序。

 

输入

 

输入文件包含几行指定命令。每一行指定一个秩序。订单描述六个整数隔开一个空间代表先后个体大小的数据包的数量从最小的大小1 * 1的最大尺寸6 * 6。输入文件的结束由线表示包含六个零。

 

输出

 

输出文件包含一行输入文件中的每一行。这一行包含订单的最小数量的包裹从相应的输入文件可以包装。没有线相对应的输出文件的最后一个“零”行输入文件。

#include
#include
using namespace std;int main(){ int a,b,c,d,e,f; while(cin>>a>>b>>c>>d>>e>>f&&(a+b+c+d+e+f)) { int sum=0; sum=f; sum+=e; if(a!=0) a=max(0,a-11*e);//一个包装箱能放1个5*5的盒子和11个1*1的盒子 sum+=d; if(b>=d*5)//一个包装箱只能放1个4*4盒子和5个2*2盒子 b=b-d*5; else { a=max(0,a-4*(d*5-b));//2*2盒子不够的空间用1*1的盒子补 b=0; } sum+=(c+3)/4;//小技巧 相当于向上取整 c%=4; if(c) { if(b>=7-2*c)//c盒子为:1,2,3,则b盒子为5,3,1得7-2*c关系式 { b-=7-2*c; a=max(0,a-(8-c));//尽可能多的放置2*2盒子 放完后放1*1盒子{c:1,2,3; b:5,3,1 a:7,6,5(填充的箱子需求数)} } else { a=max(0,a-(36-4*b-9*c)); b=0; } } sum+=(b+8)/9; b%=9; if(b) { a=max(0,a-(36-b*4)); b=0; }sum+=(a+35)/36;cout<
<

转载地址:http://abzeo.baihongyu.com/

你可能感兴趣的文章
django + nginx + uwsgi部署
查看>>
Linux下安装Emacs
查看>>
操作系统
查看>>
vuejs学习之 项目打包之后的首屏加载优化
查看>>
三十、小程序解析HTML(对富文本返回数据的处理)
查看>>
利用YUM搭建DNS
查看>>
好详细啊saltsatck超全配置
查看>>
安装LAMP环境遇到Sorry, I cannot run apxs
查看>>
centos7双网卡bond失败
查看>>
JNI AES文件及字符串加解密
查看>>
APUE读书笔记-16网络通信-01简介
查看>>
apache站点稍大文件不完整原因及解决
查看>>
python的reduce函数
查看>>
细读shell-6
查看>>
ubuntu11.10安装php mysql wordpress
查看>>
一、2 基于wsgiref定义自己的web框架
查看>>
Ubuntu Server14.04 32位安装odoo8.0简单方法
查看>>
jQuery-easyui下的多表关联的增删改操作
查看>>
我的友情链接
查看>>
兼容IE,Firefox,CSS3 opacity透明度
查看>>