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

Uva 11292 The Dragon of Loowater

2015-09-06 23:48 519 查看
题意:在一个国家,m个鸭子出现了变异,变成了恶龙,国王有n个骑士,想要杀掉所有的恶龙要保护国家的安全,如果不能将其全部杀死,那么国家便要灭亡、 给出你m个恶龙的身高,和每个骑士的身高,只有当骑士的身高大于等于恶龙的身高,骑士才能杀死恶龙、 然而派出骑士要话费一些金额,他的金额与骑士的身高是一样的、国王是否能杀死所有的恶龙,如果能杀死,国王想要话费最小的代价来杀死所有的恶龙、 如果杀不死恶龙国家便要灭亡输出 Loowater is doomed!

思路:排序+贪心 要注意的是每个骑士只能使用一次,其他的只需要找出大于恶龙身高的其实中身高最小的便可,如果没有将其全部杀死那么直接输出Loowater is doomed! 否则输出代价、

AC代码:

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int maxn=110000;
int n,m;
int a[maxn],b[maxn];
int vis[maxn];
int x,y,ans;
int main()
{
while(scanf("%d %d",&m,&n)!=EOF){
if(m+n==0)break;
memset(vis,0,sizeof(vis));
for(int i=0;i<m;i++)
scanf("%d",&a[i]);
for(int i=0;i<n;i++)
scanf("%d",&b[i]);
sort(a,a+m);
sort(b,b+n);
x=y=ans=0;
while(1){
if(x==m||y==n)break;
if(a[x]<=b[y]){
ans+=b[y];
vis[x]=1;
x++,y++;
}
else
y++;
}
int falg=0;
for(int i=0;i<m;i++)
if(vis[i]==0){
falg=1;
break;
}
if(falg)
printf("Loowater is doomed!\n");
else
printf("%d\n",ans);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: