UVa 11292 勇者斗恶龙

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

题意:
有n条任意个头的恶龙,你希望雇一些其实把它杀死。一个能力值为x的骑士可以砍掉恶龙一个直径不超过x的头,且需要支付x个金币。输出最少金币。

思路:

对两者进行排序。依次比较,头少的龙尽量用能力值小的骑士去砍。

 1 #include<iostream> 
 2 #include<cstring>
 3 #include<string>
 4 #include<algorithm>
 5 #include<vector>
 6 #include<cmath>
 7 using namespace std;
 8 
 9 const int maxn = 20000 + 5;
10 
11 int n, m;
12 int a[maxn], b[maxn];
13 
14 int main()
15 {
16     //freopen("D:\txt.txt", "r", stdin);
17     while (cin >> n >> m)
18     {
19         if (!n&&!m)  break;
20         for (int i = 0; i < n; i++)
21             cin >> a[i];
22         for (int i = 0; i < m; i++)
23             cin >> b[i];
24         sort(a, a + n);
25         sort(b, b + m);
26         int p1 = 0, p2 = 0;
27         int sum = 0;
28         while (p1 < n && p2 < m)
29         {
30             if (b[p2]>=a[p1])
31             {
32                 sum += b[p2];
33                 p1++;
34                 p2++;
35             }
36             else p2++;
37         }
38         if (p1 < n)  cout << "Loowater is doomed!" << endl;
39         else cout << sum << endl;
40     }
41 }
原文地址:https://www.cnblogs.com/zyb993963526/p/6431809.html