uva11292-Dragon of Loowater
2013-07-08 18:39
351 查看
题目大意:
有头龙有n个头,你雇佣骑士去砍掉这些头,一共有m个骑士,一个骑士对应有一个能力值x,同时x也代表你雇佣他的费用,只有当能力值大于或等于龙头的大小时可以砍掉这个头,你现在需要计算的是杀死这头龙(砍掉所有龙头)最小的雇佣费用。
输入:
第一行两个整数,n,m当n,m都为零时结束
接下来n行为头的大小、在接下来m行是m个骑士的能力值x。
输出:
每组数据输出最小的雇佣费用。
分析:
这道题目属于贪心,我们应该尽量选择能力值与头大小相近(大于等于)的骑士去砍这个头,这样所需要的费用是最少的,所以可以按骑士的能力值排序(小到大),再将龙头大小排序,然后循环判断是否i骑士可以杀死j龙头,如果可以,则雇佣该骑士。
分类:简单贪心
代码:
有头龙有n个头,你雇佣骑士去砍掉这些头,一共有m个骑士,一个骑士对应有一个能力值x,同时x也代表你雇佣他的费用,只有当能力值大于或等于龙头的大小时可以砍掉这个头,你现在需要计算的是杀死这头龙(砍掉所有龙头)最小的雇佣费用。
输入:
第一行两个整数,n,m当n,m都为零时结束
接下来n行为头的大小、在接下来m行是m个骑士的能力值x。
输出:
每组数据输出最小的雇佣费用。
分析:
这道题目属于贪心,我们应该尽量选择能力值与头大小相近(大于等于)的骑士去砍这个头,这样所需要的费用是最少的,所以可以按骑士的能力值排序(小到大),再将龙头大小排序,然后循环判断是否i骑士可以杀死j龙头,如果可以,则雇佣该骑士。
分类:简单贪心
代码:
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #define maxlen 20010 using namespace std; int n,m; int head[maxlen],ability[maxlen]; int main () { while(scanf("%d%d",&n,&m)!=EOF) { if(n==0&&m==0) break; for(int i=0;i<n;++i) scanf("%d",&head[i]); for(int i=0;i<m;++i) scanf("%d",&ability[i]); sort(head,head+n); sort(ability,ability+m); int j=0,ans=0; for(int i=0;i<m;++i) { if(ability[i]>=head[j]) { ans+=ability[i]; j++; } if(j==n) break; } if(j<n) printf("Loowater is doomed!\n"); else printf("%d\n",ans); } }
相关文章推荐
- uva 11292 Dragon of Loowater (勇者斗恶龙系列)
- UVA 题目11292 Dragon of Loowater
- UVa 11292 - Dragon of Loowater
- UVA 11292 The Dragon of Loowater
- UVa11292 - Dragon of Loowater(贪心)
- 勇者斗恶龙(The Dragon of Loowater) UVa 11292 HDU 1902
- 例题5-1 UVA 11292 The Dragon of Loowater勇者斗恶龙
- uva 11292 - Dragon of Loowater
- UVA11292 - Dragon of Loowater
- UVa11292 The Dragon of Loowater(sort排序直接比较)
- The Dragon of Loowater UVa 11292(排序后贪心)
- UVa 11292 - Dragon of Loowater
- UVA - 11292 - Dragon of Loowater
- Uva-11292-Dragon of Loowater
- uva 11292 - Dragon of Loowater(贪心)
- Dragon of Loowater UVA - 11292
- UVa 11292 The Dragon of Loowater 勇者斗恶龙
- UVa Dragon of Loowater 11292 (贪心)
- uva11292 - Dragon of Loowater
- ACM UVA 11292 - Dragon of Loowater