UVA 11292 - Dragon of Loowater 排序问题

50 篇文章 1 订阅
10 篇文章 0 订阅

题目链接

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

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

post code:

#include<stdio.h>
#include<iostream>
#include<algorithm>
using namespace std;
#define maxn 20000+20
int 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;   
} 





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值