UVA11292 HDU1902 POJ3646 Dragon of Loowater

来源:互联网 发布:面包板是做单片机的吗 编辑:程序博客网 时间:2024/06/09 17:16

问题链接:UVA11292 HDU1902 POJ3646 Dragon of Loowater。

这个问题是一个典型的贪心法问题,求代价最小。

由于需要用到排序函数,C++的排序函数参数比较简单,所以用C++编程。


AC通过的C++语言程序如下:

/* UVA11292 HDU1902 POJ3646 Dragon of Loowater */#include <cstdio>#include <algorithm>using namespace std;#define MAXN 20000int dragon[MAXN+1], knight[MAXN+1];int main(void){    int n, m;    while(scanf("%d%d", &n, &m) != EOF) {        // 结束条件判定        if(n == 0 && m == 0)            break;        // 读入数据        for(int i=0; i<n; i++)            scanf("%d", &dragon[i]);        for(int i=0; i<m; i++)            scanf("%d", &knight[i]);        // 排序:从小到大        sort(dragon, dragon+n);        sort(knight, knight+m);        // 贪心计算        int cost = 0;        int dcount = 0;        for(int i=0; i<m; i++) {            if(knight[i] >= dragon[dcount]) {                cost += knight[i];                // 全部砍完的话,结束                if(++dcount == n)                    break;            }        }        // 输出结果        if(dcount == n)            printf("%d\n", cost);        else            printf("Loowater is doomed!\n");    }    return 0;}


1 0