http://poj.org/problem?id=1017 (题目链接)

题意

  一个工厂制造的产品形状都是长方体盒子,它们的高度都是 h,长和宽都相等,一共有六个型号,分别为1*1, 2*2, 3*3, 4*4, 5*5, 6*6。这些产品通常使用一个 6*6*h 的长方体箱子包装然后邮寄给客户。因为邮费很贵,所以工厂要想方设法的减小每个订单运送时的箱子数量BoxNum。

Solution

  一开始我写了个100+行的程序,还没写完就弃疗了,感觉情况太多了。。。然后看了看题解,别人60行就搞完了我靠。。。

  嗯,看起来我的姿势还是不正确啊。

代码

//Memory Time
//248K 32MS #include<iostream>
using namespace std; int max(int a,int b)
{
return a>b?a:b;
} int main(void)
{
int s1,s2,s3,s4,s5,s6; //6种size的盒子数量
while(cin>>s1>>s2>>s3>>s4>>s5>>s6 && (s1+s2+s3+s4+s5+s6))
{
int BoxNum=0; //放进所有盒子所需的最少箱子数 BoxNum+=s6; //6*6的盒子,每个都刚好独占一个箱子 BoxNum+=s5; //5*5的盒子,放进箱子后,每个箱子余下的空间只能放11个1*1的盒子
s1=max(0,s1-s5*11); //把1*1的盒子尽可能地放进已放有一个5*5盒子的箱子 BoxNum+=s4; //4*4的盒子,放进箱子后,每个箱子余下的空间为5个2*2的盒子空间
//先把所有2*2的盒子尽可能地放进这些空间
if(s2>=s4*5) //若2*2的盒子数比空间多
s2-=s4*5; //则消去已放进空间的部分
else //若2*2的盒子数比空间少
{ //则先把所有2*2的盒子放进这些空间
s1=max(0,s1-4*(s4*5-s2)); //再用1*1的盒子填充本应放2*2盒子的空间
s2=0; //一个2*2空间可放4个1*1盒子
} BoxNum+=(s3+3)/4; //每4个3*3的盒子完全独占一个箱子
s3%=4; //3*3的盒子不足4个时,都放入一个箱子,剩余空间先放2*2,再放1*1
if(s3)
{ //当箱子放了i个3*3盒子,剩下的空间最多放j个2*2盒子
if(s2>=7-2*s3) //其中i={1,2,3} ; j={5,3,1} 由此可得到条件的关系式
{
s2-=7-2*s3;
s1=max(0,s1-(8-s3)); //当箱子放了i个3*3盒子,并尽可能多地放了个2*2盒子后
} //剩下的空间最多放j个1*1盒子,其中i={1,2,3} ; j={7,6,5}
else //但当2*2的盒子数不足时,尽可能把1*1盒子放入剩余空间
{ //一个箱子最多放36个1*1,一个3*3盒子空间最多放9个1*1,一个2*2盒子空间最多放4个1*1
s1=max(0,s1-(36-9*s3-4*s2)); //由此很容易推出剩余空间能放多少个1*1
s2=0;
}
} BoxNum+=(s2+8)/9; //每9个2*2的盒子完全独占一个箱子
s2%=9; //2*2的盒子不足9个时,都放入一个箱子,剩余空间全放1*1
if(s2)
s1=max(0,s1-(36-4*s2)); BoxNum+=(s1+35)/36; //每36个1*1的盒子完全独占一个箱子 cout<<BoxNum<<endl;
}
return 0;
}

转自:http://blog.csdn.net/lyy289065406/article/details/6674366

【poj1017】 Packets的更多相关文章

  1. 【Poj1017】Packets

    http://poj.org/problem?id=1017 艰难啊 弄了很久咧 拍了几十万组,以后拍要多组数据 Solution 从大wangxiaofang 从大往小放,有空余的从大往小填 注意细 ...

  2. 【Manthan, Codefest 18 (rated, Div. 1 + Div. 2) A】Packets

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 多重背包的二进制优化. 就是将数量x分成接近log2x份 然后这log2x份能组合成1..x内的所有数字. 从而将多重背包转化成01 ...

  3. 【驱动】USB驱动·入门

    [驱动]USB驱动·入门 Preface USB是目前最流行的系统总线之一.随着计算机周围硬件的不断扩展,各种设备使用不同的总线接口,导致计算机外部总线种类繁多,管理困难.USB总线正是因此而诞生的. ...

  4. 【方法】如何限定IP访问Oracle数据库

    [方法]如何限定IP访问Oracle数据库 1.1  BLOG文档结构图 1.2  前言部分 1.2.1  导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知 ...

  5. 【OS】NMON的简介和使用

    [OS]NMON的简介和使用 目前NMON已开源,以sourceforge为根据地,网址是http://nmon.sourceforge.net. 1. 目的 本文介绍操作系统监控工具Nmon的概念. ...

  6. 【转】一文掌握 Linux 性能分析之网络篇

    [转]一文掌握 Linux 性能分析之网络篇 比较宽泛地讲,网络方向的性能分析既包括主机测的网络配置查看.监控,又包括网络链路上的包转发时延.吞吐量.带宽等指标分析.包括但不限于以下分析工具: pin ...

  7. OpenStack-Neutron-Fwaas-代码【一】

    Kilo的代码中对Fwaas做了优化,可以将规则应用到单个路由上 但是juno里面还是应用到租户的所有路由上的,因此对juno的代码做了修改 1. 介绍 在FWaaS中,一个租户可以创建多个防火墙,而 ...

  8. 【Linux】防火墙与CentOS中的iptables

    [iptables] 参考好文:http://www.zsythink.net/archives/1199.这个博客的作者写了深入浅出的iptables介绍,基本上我就是做个他的读书笔记. ■ 基本介 ...

  9. 【Pyhon】利用BurpSuite到SQLMap批量测试SQL注入

    前言 通过Python脚本把Burp的HTTP请求提取出来交给SQLMap批量测试,提升找大门户网站SQL注入点的效率. 导出Burp的请求包 配置到Burp的代理后浏览门户站点,Burp会将URL纪 ...

随机推荐

  1. CSS3 3D骰子

    z zz zz zzzz zzzzz zzzzzz

  2. NOI2018准备 Day9

    tjvj清北入学测试又打了一上午,暴力搜索得了部分分,dp全崩了,8道题凑了500分. 下午打了个速度赛,成绩未知,另外又做了1道题,这效率low到爆!!!

  3. .NET 4.0 任务(Task)

    随着 .NET 4.0的到来,她与以前各版本的一个明显差别就是并行功能的增强,以此来适应这个多核的世界.于是引入了一个新概念---任务,作为支持并行运算的重要组成部分,同时,也作为对线程池的一个补充和 ...

  4. 我理解的Hanlder--android消息传递机制

    每一个学习Android的同学都会觉得Handler是一个神奇的东西,我也一样,开始我以为我懂了Handler的机制,后来发现自己是一知半解,昨天想想,我能否自己实现一个Handler,让子线程与Ac ...

  5. Qt Creator 常用快捷键

    多行注释模式                                                                                            Ct ...

  6. 【开源分享:入门到精通ASP.NET MVC+EF6+Bootstrap】从这里开始,一起搭框架(1)开篇介绍

    框架简介 这几年一直在做ASP.NET开发,几年前做项目都是老老实实一行行的写代码,后来发现那些高手基本都会有自己积累起来的代码库,现在称之为开发框架,基础代码不用再去堆,主要精力可以集中在业务逻辑实 ...

  7. ASP.NET - SqlSugar ORM框架 更新列表

    以后SqlSugar所有更新都会在这个贴子更新 SqlSugar是一款轻量级的MSSQL ORM ,除了具有媲美ADO的性能外还具有和EF相似简单易用的语法. 学习列表 0.功能更新 1.SqlSug ...

  8. Python【map、reduce、filter】内置函数使用说明(转载)

    转自:http://www.blogjava.net/vagasnail/articles/301140.html?opt=admin 介绍下Python 中 map,reduce,和filter 内 ...

  9. nios II--实验1——hello_world硬件部分

    hello_world 硬件开发 新建原理图 1.打开Quartus II 11.0,新建一个工程,File -> New Project Wizard…,忽略Introduction,之间单击 ...

  10. swfupload提示“错误302”的解决方法

    1.关于图片上传控件,flash控件的显示效果要好一些,本人使用swfupload 2.swfupload上传控件使用方式详见文档 http://www.leeon.me/upload/other/s ...