UVA 11292 - Dragon of Loowater 排序问题

来源:互联网 发布:手机双桌面软件 编辑:程序博客网 时间:2024/06/05 21:38

题目链接

题意就是每个勇士有个能力值,恶龙有多个头,一个勇士的能力值要大于恶龙的一个头的能力值,就可以将一个头砍掉,一个勇士只能用一次,雇佣的价格等于勇士的能力值,问是否能将恶龙的头全部砍掉,若能输出最小花费。

算法: 对勇士能力值从小到大排序,对恶龙的能力值排序,然后一一比对就可以了。

post code:

#include<stdio.h>#include<iostream>#include<algorithm>using namespace std;#define maxn 20000+20int dragon[maxn],knight[maxn];int main(){   int n,m;   while(scanf("%d%d",&n,&m)!=EOF){        if( (n==0)&&(m==0) )break;        for(int i=1;i<=n;i++)           scanf("%d",&dragon[i]);        for(int i=1;i<=m;i++)           scanf("%d",&knight[i]);        sort(dragon+1,dragon+n+1);        sort(knight+1,knight+m+1);        int i,j=1,sum=0;        for(i=1;i<=m;i++){         //warrior kill one head of a dragon            if(knight[i]>=dragon[j]){               sum+=knight[i];               j++;               if(j==n+1)break;                                    }        }        if(j==n+1)printf("%d\n",sum);        else printf("Loowater is doomed!\n");                                                                         }    return 0;   } 





原创粉丝点击