zoukankan      html  css  js  c++  java
  • poj 1017(贪心)

    【题目大意

    题目大意是这样的:某工厂生产几种产品,首先用packet包住,这些产品的高度都是h,底面积有1*1,2*2,3*3,4*4,5*5,6*6六种规格,下面我们要用高度为h,底面积为6*6的集装箱装这些货物,问怎样使所用集装箱数目最少?

    解题思路

    我们首先必须先装底面积大的货物,并且对于面积为4*4,5*5,6*6的货物,每一件都需要一个独立的集装箱。对于底面积为3*3的货物,每四个需要一个集装箱。

    那么我们可以得知对于装了底面积为3*3的货物的集装箱,其剩余可以装5,3,1个底面积为2*2的货物。对于装了底面积为4*4的集装箱,其剩余空间可以装5个2*2的货物。对于装了底面积为5*5的集装箱,其剩余可以装11个底面积为1*1的集装箱。我们可以通过计算剩余的空间进而求得最小数目。

    AC代码

     1 #include <stdio.h>
     2 int  main()
     3 {
     4  int N, a, b, c, d, e, f, y, x;
     5  int u[4]={0, 5, 3, 1};
     6  while(1)
     7  {
     8   scanf("%d%d%d%d%d%d", &a, &b, &c, &d, &e, &f);
     9   if (a == 0 && b == 0 && c == 0 && d == 0 && e == 0 && f == 0) break;
    10   N = f + e + d + (c + 3) / 4;//向上取整
    11   y = 5 * d + u[c % 4];
    12   if(b > y) N += (b - y + 8 ) / 9;
    13   x = 36 * N - 36 * f - 25 * e - 16 * d - 9 * c - 4 * b;
    14   if(a > x) N += ( a - x + 35 ) / 36;
    15   printf("%d
    ", N);
    16  }
    17  return 0;
    18 }
  • 相关阅读:
    BZOJ 1191 HNOI2006 超级英雄hero
    BZOJ 2442 Usaco2011 Open 修建草坪
    BZOJ 1812 IOI 2005 riv
    OJ 1159 holiday
    BZOJ 1491 NOI 2007 社交网络
    NOIP2014 D1 T3
    BZOJ 2423 HAOI 2010 最长公共子序列
    LCA模板
    NOIP 2015 D1T2信息传递
    数据结构
  • 原文地址:https://www.cnblogs.com/khbcsu/p/3884590.html
Copyright © 2011-2022 走看看