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

 

你可能感兴趣的:(div)