zoukankan      html  css  js  c++  java
  • TC598 div2

    题意:给一些物品item[],这些物品的重量在101至300之间,要将这些物品全部放进若干个bins中,已知bins盛的重量为300,可以将bins装满也可以不装满,

    问放这些物品最少需要几个bins.

    思路:当时把最关键的地方忽略了,就是物品的重量在101至300之间,这就说明每个bins至多放2个物品。然后从小到大排序,倒着贪心就可以了。

     1 #include<stdio.h>
     2 #include<stack>
     3 #include<string.h>
     4 #include<iostream>
     5 #include<algorithm>
     6 #include<vector>
     7 using namespace std;
     8 
     9 class BinPackingEasy
    10 {
    11 private:
    12     int count;
    13 public:
    14     int minBins(vector <int> item)
    15     {
    16         count = 0;
    17         int j;
    18         int len = item.size();
    19         int vis[len+10];
    20         memset(vis,0,sizeof(vis));
    21         sort(item.begin(),item.end());
    22         for(int i = len-1; i >= 1; i--)
    23         {
    24             if(vis[i]) continue;
    25             vis[i] = 1;
    26             for(j = i-1; j >= 0; j--)
    27             {
    28                 if(item[i] + item[j] <= 300 && !vis[j])
    29                 {
    30                     vis[j] = 1;
    31                     count++;
    32                     break;
    33                 }
    34             }
    35             if(j == -1)
    36                 count++;
    37         }
    38         for(int i = 0; i < len; i++)
    39             if(!vis[i])
    40                 count++;
    41         return count;
    42     }
    43 };
    View Code
  • 相关阅读:
    [leetCode]剑指 Offer 43. 1~n整数中1出现的次数
    [leetCode]剑指 Offer 42. 连续子数组的最大和
    HDU
    HDU
    HDU
    HDU
    HDU
    HDU
    POJ
    POJ
  • 原文地址:https://www.cnblogs.com/LK1994/p/3449514.html
Copyright © 2011-2022 走看看