題意:在一個國家,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;
}