poj3646

来源:互联网 发布:cf不掉血软件下载 编辑:程序博客网 时间:2024/06/05 08:06

简单的贪心,经典水题。


题意:有n条恶龙,雇佣骑士把它杀死,能力值为x的骑士能杀死直径不超过x的恶龙的头,但需要花费x金币,砍掉所有恶龙的头,怎样金币最少?


解法:直接对恶龙的头和勇士的能力值排序,然后遍历一遍比较一下就能解决啦。


#include<cstdio>#include<algorithm>using namespace std;int a[20010],b[20010];int main(){    int n,m,s,cnt;    while(scanf("%d%d",&n,&m)){        s=0;        cnt=0;        if(n==0&&m==0)            break;        for(int i=0;i<n;i++){            scanf("%d",&a[i]);        }        for(int i=0;i<m;i++){            scanf("%d",&b[i]);        }        sort(a,a+n);        sort(b,b+m);        for(int i=0;i<m;i++){            if(b[i]>=a[cnt]){                s+=b[i];                cnt++;                if(cnt==n){                    break;                }            }        }        if(cnt<n){            printf("Loowater is doomed!\n");        }        else{            printf("%d\n",s);        }    }    return 0;}


0 0
原创粉丝点击