您的位置:首页 > 编程语言 > Go语言

UVA 11292 Dragon of Loowater

2014-06-05 18:47 495 查看
贪心算法,先把龙头和骑士的数据从小到大排序,每个龙头选择最划算的一个骑士去砍这个龙头,最后总的消耗就是最小的。

#include <stdio.h>
#include <algorithm>

int drangon[20001];
int knight[20001];

int cmp(const void *a, const void *b){
int *pa = (int*)a;
int *pb = (int*)b;
return *pa-*pb;
}

void func(int n, int m){
if(m < n){
printf("Loowater is doomed!\n");
return;
}

qsort(drangon+1, n, sizeof(int), cmp);
qsort(knight+1, m, sizeof(int), cmp);

int i, j, sum, count;
i = j =1; sum = 0; count = 0;
while(1){
if(i > n)
break;

for(; j<=m; j++)
if(knight[j] >= drangon[i])
break;

if(j > m)
break;

sum += knight[j];
j++;
i++;
count++;
}
if(count == n){
printf("%d\n", sum);
}
else{
printf("Loowater is doomed!\n");
}
}

int main(void){
int n, m, i;

//freopen("input.dat", "r", stdin);
while(scanf("%d %d", &n, &m) != EOF){
if(0==m && 0==n)
break;

for(i=1; i<=n; i++)
scanf("%d", drangon+i);
for(i=1; i<=m; i++)
scanf("%d", knight+i);
func(n, m);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  acm uva