码迷,mamicode.com
首页 > 编程语言 > 详细

UVa 11292 Dragon of Loowater (水题,排序)

时间:2016-05-31 23:56:34      阅读:244      评论:0      收藏:0      [点我收藏+]

标签:

题意:有n个条龙,在雇佣勇士去杀,每个勇士能力值为x,只能杀死头的直径y小于或等于自己能力值的龙,只能被雇佣一次,并且你要给x赏金,求最少的赏金。

析:很简单么,很明显,能力值高的杀直径大的,低的杀直径小的。所以我们先对勇士能力值从小到大排序,然后对龙的直径从小到大排序,

然后扫一遍即可,如某个勇士杀不龙,就可以跳过,扫到最后,如果杀完了就结束,输出费用,否则就是杀不完。

代码如下:

#include <iostream>
#include <cstdio>
#include <climits>
#include <cmath>
#include <algorithm>
#include <cstring>
#include <map>

using namespace std;
const int maxn = 20000 + 10;

int a[maxn], b[maxn];

int main(){
    int n, m;
    while(scanf("%d %d", &n, &m) && m && n){
        for(int i = 0; i < n; ++i)    scanf("%d", &a[i]);
        for(int i = 0; i < m; ++i)    scanf("%d", &b[i]);

        sort(a, a+n);  sort(b, b+m);
        if(n > m){  printf("Loowater is doomed!\n");  continue;   }//勇士太少,直接结束

        int cnt = 0, cost = 0;
        for(int i = 0; i < m; ++i)
            if(b[i] >= a[cnt]){
                cost += b[i];//记下费用
                if(++cnt == n)  break;//龙杀完了,提前退出
            }
        if(cnt < n)  printf("Loowater is doomed!\n");
        else printf("%d\n", cost);
    }
    return 0;
}

 

UVa 11292 Dragon of Loowater (水题,排序)

标签:

原文地址:http://www.cnblogs.com/dwtfukgv/p/5547888.html

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