zoukankan      html  css  js  c++  java
  • 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;

    }

  • 相关阅读:
    Vue优化首页加载速度 CDN引入
    vue中前进刷新、后退缓存用户浏览数据和浏览位置的实践
    node.js
    keep-alive前进没有刷新
    移动端ios和安卓input问题
    前端技术原理
    Vue给子组件传值为空
    使用vue开发输入型组件更好的一种解决方式(子组件向父组件传值,基于2.2.0)
    Vue路由参数设置可有可无
    Vue组件的三种调用方式
  • 原文地址:https://www.cnblogs.com/yejinru/p/2436495.html
Copyright © 2011-2022 走看看