• hoj 1094 Packets //poj 1017 Packets


    /*

     

    贪心:

        当为6*6时,只能用一个盒子装

        当为5*5时,可以每一个多装111*1的盒子

        当为4*4时,可以先装2*2的盒子,每一个4*4的可以装52*2,若2*2不够,则装1*1

        当为3*3时,每一个可以装43*3,若最后不足4个,先用2*2的装,空余的位置用1*1

        当为2*2时,每一个可以装92*2的,最后有剩余装1*1

        若最后还有1*1的,每36个可以装一盒,多的算多一盒

     

    */

    #include <iostream>

    #include <cstdio>

    using namespace std;

    #define X 7

    int a[X];

    int main()

    {

        freopen("sum.in","r",stdin);

        freopen("sum.out","w",stdout);

        while(scanf("%d%d%d%d%d%d",a+1,a+2,a+3,a+4,a+5,a+6),a[1]||a[2]||a[3]||a[4]||a[5]||a[6])

        {

           /////////////6

           int ans = a[6];

     

           /////////////5

           int temp = a[5]*11;

           ans += a[5];

           a[1] = max(0,a[1]-temp);//只能用1*1的装

     

           ////////////////4

           ans += a[4];

           temp = a[4]*5;

           if(temp>a[2])        //先用2*2的装

           {

               a[1] = max(0,a[1]-(temp-a[2])*4);//不够的话,用1*1

               a[2] = 0;

           }

           else

               a[2] -= temp;     //足够的2*2就用2*2的装就行

     

           ///////////3

           ans += (a[3]+3)/4;       //43*3一盒

           a[3] = a[3]%4;

           if(a[3])             //有剩余

           {

               if(a[2]>7-2*a[3])//2*2的够装的话

               {

                  a[2] -= 7-2*a[3];//注意到当a[3] = {1 2 3},对应的a[2] = {5 3 1},构造函数

                  a[1] = max(0,a[1]-8+a[3]);//剩下的用1*1

               }

               else              //2*2不够装的话,全用1*1的装

               {

                  a[1] = max(0,a[1]-(36-9*a[3]-4*a[2]));

                  a[2] = 0;

               }

           }

     

           ////////////////2

           ans += (a[2]+8)/9;       //9个装一盒

           a[2] = a[2]%9;

           if(a[2])

               a[1] = max(0,a[1]-36+a[2]*4);//剩下的用1*1的装

     

           ////////////////1

           ans += (a[1]+35)/36;

           printf("%d\n",ans);

        }

     

        return 0;

    }

  • 相关阅读:
    在Android中如何获取视频的第一帧图片并显示在一个ImageView中
    利用MsChart控件绘制多曲线图表 z
    国外成熟的程序交易系统的思路 z
    稳健获利
    用vmware安装gho文件
    数学之美 zt
    大型邮箱smtp服务器及端口 收集
    英语之路 zt
    C# Get Desktop Screenshot ZZ
    C#/PHP Compatible Encryption (AES256) ZZ
  • 原文地址:https://www.cnblogs.com/yejinru/p/2436495.html
Copyright © 2020-2023  润新知