UVa 11292 Dragon of Loowater 贪心+排序

来源:互联网 发布:windows系统如何截图 编辑:程序博客网 时间:2024/05/21 14:35

题目大意:
有一堆待砍掉的龙和一定能力值的骑士,雇佣骑士的费用等于骑士的能力值,求雇佣这些骑士的最低费用

大致思路:
贪心,将龙和骑士从小到大排序,
贪心原理
对应每一条龙,能砍掉龙的能力值最低的骑士就雇佣。

c++:

#include<cstdio>#include<algorithm>using namespace std;const int MAXN=20000+10;int dragon[MAXN],knight[MAXN];int main(){    int m,n;    while(scanf("%d%d",&m,&n)!=EOF){        if(m==0&&n==0)            break;        for(int i=0;i<m;i++)            scanf("%d",&dragon[i]);        for(int i=0;i<n;i++)            scanf("%d",&knight[i]);        sort(dragon,dragon+m);        sort(knight,knight+n);        int j=0,ans=0,killed=0;        for(int i=0;i<m;i++){            while(j!=n&&knight[j]<dragon[i])                j++;            if(j==n)                break;            else if(knight[j]>=dragon[i]){                ans+=knight[j];                killed++;                j++;           //砍完后就要轮到下一个骑士了            }        }        if(killed==m)          //如果都砍完了            printf("%d\n",ans);        else            printf("Loowater is doomed!\n");    }    return 0;}
0 0
原创粉丝点击