uva11292勇者鬥惡龍(貪心)
阿新 • • 發佈:2018-12-11
這題使用了貪心的演算法,先用勇士和龍的頭排序,因為要找付給騎士的錢最少的,所以從小到大排序,如果可以砍下來頭的話,就讓騎士的錢加上騎士的身高,讓殺龍的數量加一 如果到最後龍全部被殺了且付的錢大於0,就輸出付給騎士的總錢數:程式碼
#include<bits/stdc++.h>
using namespace std;
int a[1000000],b[1000000];
int num,sum,bk[1000000];
int main() {
int n,m;
while(cin>>n>>m&&n&&m) {
memset (bk,0,sizeof(bk));
sum=0,num=0;
for(int i=0;i<n;i++)
cin>>a[i];
for(int i=0;i<m;i++)
cin>>b[i];
sort(a,a+n);
sort(b,b+m);
for(int i=0;i<m;i++)
for(int j=0;j<n;j++) {
if(!bk[j]&&b[i]>=a[j]) {
num++;
bk[ j]=1;
sum+=b[i];
break;
}
}
if(sum>0&&num==n)
cout<<sum<<endl;
else
cout<<"Loowater is doomed!\n";
}
}