题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5281
贪心题目,但是看看我的博客里边相关贪心的题解实在是少的可怜,这里就写出来供大家一起探讨。
题意还是比较好理解的,这里有一个小小的坑点:枪的数量,和怪物的数量,不一定是相等的,所以我们这里要特殊处理一下。
reverse函数:http://blog.sina.com.cn/s/blog_6d79d83a0100wh95.html
1 #include <stdio.h> 2 #include <string.h> 3 #include <math.h> 4 #include <algorithm> 5 #include <iostream> 6 #include <ctype.h> 7 #include <iomanip> 8 #include <queue> 9 #include <stdlib.h> 10 using namespace std; 11 12 int a1[100010],a2[100010]; 13 14 int main() 15 { 16 int t; 17 scanf("%d",&t); 18 while(t--){ 19 int n,m; 20 scanf("%d %d",&n,&m); 21 for(int i=0; i<n; i++){ 22 scanf("%d",&a1[i]); 23 } 24 for(int i=0; i<m; i++){ 25 scanf("%d",&a2[i]); 26 } 27 28 sort(a1,a1+n); 29 reverse(a1,a1+n); 30 sort(a2,a2+m); 31 32 long long sum=0; 33 int min1=min(n,m); 34 for(int i=0; i<min1; i++){ 35 if(a1[i]>a2[i]){ 36 sum+=a1[i]-a2[i]; 37 } 38 } 39 printf("%lld\n",sum); 40 } 41 }