码迷,mamicode.com
首页 > 其他好文 > 详细

UVa 1149 装箱

时间:2017-01-27 20:48:29      阅读:268      评论:0      收藏:0      [点我收藏+]

标签:思路   容量   get   names   ios   nbsp   else   tps   https   

https://vjudge.net/problem/UVA-1149

题意:给定N个物品的重量和背包的容量,同时要求每个背包最多装两个物品。求至少需要的背包数。

思路:很简单的贪心。每次将最轻的和最重的放一个背包里,如果放不下,则只放一个最重的。

 1 #include<iostream>  
 2 #include<algorithm>
 3 using namespace std;
 4 
 5 const int maxn = 100000 + 5;
 6 
 7 int n, m;
 8 int a[maxn];
 9 int ans;
10 
11 void solve()
12 {
13     ans = 0;
14     sort(a, a + n);
15     int L = 0, R = n - 1;
16     while (L <= R)
17     {
18         if (a[L] + a[R] <= m)
19         {
20             ans++;
21             L++;
22             R--;
23         }
24         else
25         {
26             ans++;
27             R--;
28         }
29     }
30 }
31 
32 int main()
33 {
34     //freopen("D:\\txt.txt", "r", stdin);
35     int t;
36     cin >> t;
37     while (t--)
38     {
39         cin >> n >> m;
40         for (int i = 0; i < n; i++)
41         {
42             cin >> a[i];
43         }
44         solve();
45         cout << ans << endl;
46         if (t)  cout << endl;
47     }
48     return 0;
49 }

 

UVa 1149 装箱

标签:思路   容量   get   names   ios   nbsp   else   tps   https   

原文地址:http://www.cnblogs.com/zyb993963526/p/6353989.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!