装箱问题1.0

  题目大意:就是一个工厂制造的产品都是正方形的,有1*1,2*2,3*3,4*4,5*5,6*6,高度都是h,现在要包装这些物品,只能用6*6*h的包装去装,问你怎么装才能使箱子打到最小?

  这一题其实很简单,装箱子问题一般都是贪婪算法,这一题也不例外,那么这一又要怎么贪心呢?其实可以这样,我们可以看到,如果我们装了6,5,4这三个尺寸的物品,那么这个一个箱子肯定只能最大装这三个物品一个,6尺寸箱子没有空余位置,5尺寸的箱子还有11个空位,可以装11个1尺寸的物品,4尺寸的箱子可以再装5个2尺寸的物品。

  但是3尺寸的物品就是有点复杂了,因为我们想尽量让三尺寸的物品装在一个箱子里面(贪婪嘛),我们知道一个箱子最多只能转4个三尺寸物品,如果三尺寸物品刚好为4的倍数,那么我们就可以得到箱子的个数了,如果剩余一个3尺寸物品,那么其中3尺寸箱子中的一个箱子还可以装5个2尺寸物品,如果剩余两个,则有3尺寸物品的箱子还可以装3个2尺寸物品,如果剩余3个,则那个3尺寸箱子还可以装1一个2尺寸物品。

  我们只用把2尺寸的物品装好了,那么接下来的事情就简单了,前面我们在3,4尺寸的物品的时候解决了2尺寸物品的问题的一部分,最后剩下的2尺寸物品则有多少就放多少就可以了,1尺寸的填充剩下的,不够再放

  这一题可以用模拟,不过太慢了,直接用数学去解就很快了

  1. #include <iostream>
  2. #include <functional>
  3. #include <algorithm>
  4.  
  5. using namespace std;
  6.  
  7. static int stuff[];
  8. static int left_3[] = { , , , };
  9.  
  10. void Search(void);
  11.  
  12. int main(void)
  13. {
  14. while ()
  15. {
  16. for (int i = ; i <= ; i++)
  17. scanf("%d", &stuff[i]);
  18. if (stuff[] == && stuff[] ==
  19. && stuff[] == && stuff[] ==
  20. && stuff[] == && stuff[] == )
  21. break;//6个物品为0,直接再见
  22. Search();
  23. }
  24. return ;
  25. }
  26.  
  27. void Search(void)
  28. {
  29. int ans = , left_2, left_1;
  30. ans += stuff[] + stuff[] + stuff[] + (stuff[] + ) / ;//654肯定是有多少个加多少个,stuff[3] + 3向上取整
  31.  
  32. left_2 = stuff[] * + left_3[stuff[] % ];//如果这些箱子都填满了2*2的箱子
  33.  
  34. if (left_2 < stuff[])
  35. ans += (stuff[] - left_2 + ) / ;
  36.  
  37. left_1 = * ans - * stuff[] - * stuff[] - * stuff[]
  38. - * stuff[] - * stuff[];//在除了1*1的物品填满以后,剩余位置,向上取整
  39.  
  40. if (left_1 < stuff[])
  41. ans += (stuff[] - left_1 + ) / ;//直接计算多出来1的大小,向上取整
  42.  
  43. printf("%d\n", ans);
  44. }

Greedy:Packets(POJ 1017)的更多相关文章

  1. POJ 1017 Packets【贪心】

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

  2. poj 1017 Packets 裸贪心

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

  3. Poj 1017 / OpenJudge 1017 Packets/装箱问题

    1.链接地址: http://poj.org/problem?id=1017 http://bailian.openjudge.cn/practice/1017 2.题目: 总时间限制: 1000ms ...

  4. POJ 1017:Packets

    Packets Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 47513   Accepted: 16099 Descrip ...

  5. POJ 1017 Packets

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

  6. poj 1017 Packets 贪心

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

  7. Poj 1017 Packets(贪心策略)

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

  8. POJ 1017 Packets(积累)

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

  9. POJ - 1017 贪心训练

    Packets Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 59725   Accepted: 20273 Descrip ...

随机推荐

  1. BZOJ1113 海报PLA

    好像是很古老的题?现在BZOJ上找不到该题,所以没有提交. 1113: [Poi2008]海报PLA Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 8 ...

  2. AndroidManifest File Features

    http://www.android-doc.com/guide/topics/manifest/manifest-intro.html The following sections describe ...

  3. Centos目录结构详细版

    使用linux也有一年多时间了  最近也是一直在维护网站系统主机  下面是linux目录结构说明 本人使用的是centos系统,很久没有发表博文了 近期会整理自己所用所了解知识点,发表linux相关的 ...

  4. sprintf

    功能:将数据格式化到字符串中 原型:int sprintf( char *buffer, const char *format, [ argument] … );返回值是这个字符串的长度 上次我企图这 ...

  5. 初学structs2,表单验证简单补充

    一.使用注解方式,跳过验证某个方法 由于在开发中,我们不需在请求每一个action类中的方法时都要走validate方法,那么我们可以在这些不需要验证的方法上加上@SkipValidation注解即可 ...

  6. mysql 自连接

    SELECT语句中的自连接. 到目前为止,我们连接的都是两张不同的表,那么能不能对一张表进行自我连接呢?答案是肯定的. 有没有必要对一张表进行自我连接呢?答案也是肯定的. 表的别名: 一张表可以自我连 ...

  7. CSS打造经典鼠标触发显示选项

    650) this.width=650;" border="0" alt="" src="http://img1.51cto.com/att ...

  8. html5浮动、等高、弹性盒模型

    1px dashed虚线 box-sizing拯救了布局 1.inherit  继承父级 2.content-box(默认)-----这个盒子的边框.内边距 这2个值是不包括在width和height ...

  9. spring mvc实现登录+异常

    登录页面login.jsp在webroot下 <body> <form action="user/login" method="post"&g ...

  10. JSP 内置对象(request response session application out pageContext)

    request对象  javax.servlet.http.HttpServletRequest接口的实例 request.setCharacterEncoding("utf-8" ...