您的位置:首页 > 编程语言 > Go语言

uva 11292 Dragon of Loowater (简单贪心)

2020-06-06 07:37 423 查看

题意: 有m个骑士,n头的龙,一个能力值为x的骑士可以砍掉恶龙一个直径不超过x的头,且需要支付x的金币,一个人只能砍一个头,求砍掉龙的所有头支付最少的金币。无解输出 “Loowater is doomed!”。

解法: 先把龙头的直径和勇士的能力按从小到大排序,之后按顺序将龙头的直径和骑士的能力比较,能力大于半径,支付金币,当龙头被砍完了就结束比较,输出结果.

#include<cstdio>
#include<algorithm>
using namespace std;
int dia[20009];  //记录龙的直径
int kni[20009];  //记录骑士的能力
int main()
{
int n,m;   //n是龙头的个数,m是骑士的个数
while(scanf("%d%d",&n,&m)!=EOF)
{
if(n == 0 && m == 0)break;
for(int i=1;i <= n;i++)
{
scanf("%d",&dia[i]);
}
for(int i=1;i <= m;i++)
{
scanf("%d",&kni[i]);
}
sort(dia + 1,dia + 1 + n);
sort(kni + 1,kni + 1 + m);
int cost = 0;
int i=1;
for(int k=1;k <= m;k++)
{

if(dia[i] <= kni[k])
{
cost += kni[k];
if(++i > n)break;  //当龙头砍完时退出循环
}
}
if(n < i) printf("%d\n",cost);
else printf("Loowater is doomed!\n");
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: