• 装箱问题 (贪心水题)


    【题目描述】

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

    【题目链接】

        http://noi.openjudge.cn/ch0406/19/

    【算法】

        由于需要装箱的产品总面积一定,则最优情况是箱子浪费面积最少。6,5,4,3所需包裹数是一定的,然后尽可能满足2,最后在考虑1。细节要注意下,同时码力太弱了。。。唉。。。

    【代码】

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 int ans;
     4 int a[7],b[4]={0,5,3,1};
     5 int main()
     6 {
     7     while(scanf("%d%d%d%d%d%d",&a[1],&a[2],&a[3],&a[4],&a[5],&a[6])!=EOF) {
     8         if(!a[1]&&!a[2]&&!a[3]&&!a[4]&&!a[5]&&!a[6]) break;
     9         ans=a[6]+a[5]+a[4]+ceil(a[3]/4.0);
    10         int for2=a[4]*5+b[a[3]%4];
    11         if(for2<a[2]) ans+=ceil((a[2]-for2)/9.0); //至此,2,3,4,5,6所需箱子数已经确定,故当前还能插入的1的个数可以考虑反面用总面积减去用于其它产品的面积
    12         int for1=ans*36-36*a[6]-25*a[5]-16*a[4]-9*a[3]-4*a[2];
    13         if(for1<a[1]) ans+=ceil((a[1]-for1)/36.0);
    14         printf("%d
    ",ans);
    15     }
    16     return 0;
    17 }
  • 相关阅读:
    vue 前端框架 (二) 表格增加搜索
    vue 前端框架
    数据结构-树的基本操作
    linux的串口驱动分析
    TTY驱动程序架构
    linux MTD系统解析(转)
    DM9000网卡的基本工作原理
    ok6410的LCD裸机范例
    ok6410的DMA裸机总结
    ok6410串口裸机总结
  • 原文地址:https://www.cnblogs.com/Willendless/p/9351398.html
Copyright © 2020-2023  润新知