POJ 3646 Dragon of Loowater
2014-04-29 22:22
393 查看
题目大意:
龙有n个头,每个头都有一个直径(int型),有m个骑士,每个骑士都有各自的身高(int型),其中1 ≤ n, m ≤ 20,000,只有身高大于等于头直径的骑士才能砍掉该龙头,并且一个骑士最多只能砍一个头,且每个骑士的佣金等于该骑士的身高,现要求砍掉所有头所需的最少金额。
现有多个测例,每个测例都给出n和m(以n, m = 0表示输入结束),以及n个头的直径和m个骑士的身高,求出每个测例的中所需的最少砍完所有龙头的金额,如果龙头无法被砍完则输出“Loowater is doomed!”。
题目链接
注释代码:
单词解释:
nuisance:n, 讨厌的人,麻烦的事
minor:adj, 次要的,较小的
shore:n, 海滨
creek:n, 小湾,小溪
goose:n, 鹅
geese:n, 鹅(复数)
predator:n, 捕食者,肉食者
keep clear of:vt, 避开,不接触
occasionally:adv, 偶尔,间或
bite:vt, 咬
tolerate:vt, 容忍(容忍不好的东西)
freak:n, 畸形,变态,怪人
mutation:n, 突变,变异
spawn:vt, 产卵; n, 卵
crisp:n, 松脆易碎物; adj, 松脆易碎的
slay:vt, 杀死,残杀
webbed:adj, 有蹼的
tan:adj, 黄褐色的
cream:n, 奶油
breast:n, 乳房,胸部
feather:n, 羽毛
chin strap:n, 下巴托
bill:n, 鸟喙
knight:n, 骑士
chop:vt, 砍下(chop off)
wage:n, 工资
advisor:n, 顾问,指导
doom:n, 厄运,死亡,世界末日
doomed:adj, 注定要完蛋了
龙有n个头,每个头都有一个直径(int型),有m个骑士,每个骑士都有各自的身高(int型),其中1 ≤ n, m ≤ 20,000,只有身高大于等于头直径的骑士才能砍掉该龙头,并且一个骑士最多只能砍一个头,且每个骑士的佣金等于该骑士的身高,现要求砍掉所有头所需的最少金额。
现有多个测例,每个测例都给出n和m(以n, m = 0表示输入结束),以及n个头的直径和m个骑士的身高,求出每个测例的中所需的最少砍完所有龙头的金额,如果龙头无法被砍完则输出“Loowater is doomed!”。
题目链接
注释代码:
/* * Problem ID : POJ 3646 Dragon of Loowater * Author : Lirx.t.Una * Language : C++ * Run Time : 32 ms * Run Memory : 252 KB */ #include <algorithm> #include <iostream> #include <cstdio> //龙和骑士的最大数量 #define MAXN 20000 using namespace std; int d[MAXN];//dragon,存放龙头的直径 int k[MAXN];//knight,存放每个骑士的价格 int main() { int n, m;//龙头和骑士的数量 int dd, kk;//龙头和骑士的计数指针 int cost;//雇佣骑士所花的总费用 int i;//计数变量 while ( scanf("%d%d", &n, &m), n || m ) { for ( i = 0; i < n; i++ ) scanf("%d", d + i); for ( i = 0; i < m; i++ ) scanf("%d", k + i); sort(d, d + n);//对两者从大到小排序,贪心选择达到最优效果 sort(k, k + m); cost = 0; for ( dd = 0, kk = 0; kk < m; kk++ )//从骑士开始遍历 if ( k[kk] >= d[dd] ) { cost += k[kk];//决定雇佣 if ( ++dd == n )//如果龙头已经被砍完则成功退出 break; } if ( dd < n )//龙头没被砍完,输出失败信息 puts("Loowater is doomed!"); else printf("%d\n", cost); } return 0; }无注释代码:
#include <algorithm> #include <iostream> #include <cstdio> #define MAXN 20000 using namespace std; int d[MAXN]; int k[MAXN]; int main() { int n, m; int dd, kk; int cost; int i; while ( scanf("%d%d", &n, &m), n || m ) { for ( i = 0; i < n; i++ ) scanf("%d", d + i); for ( i = 0; i < m; i++ ) scanf("%d", k + i); sort(d, d + n); sort(k, k + m); cost = 0; for ( dd = 0, kk = 0; kk < m; kk++ ) if ( k[kk] >= d[dd] ) { cost += k[kk]; if ( ++dd == n ) break; } if ( dd < n ) puts("Loowater is doomed!"); else printf("%d\n", cost); } return 0; }
单词解释:
nuisance:n, 讨厌的人,麻烦的事
minor:adj, 次要的,较小的
shore:n, 海滨
creek:n, 小湾,小溪
goose:n, 鹅
geese:n, 鹅(复数)
predator:n, 捕食者,肉食者
keep clear of:vt, 避开,不接触
occasionally:adv, 偶尔,间或
bite:vt, 咬
tolerate:vt, 容忍(容忍不好的东西)
freak:n, 畸形,变态,怪人
mutation:n, 突变,变异
spawn:vt, 产卵; n, 卵
crisp:n, 松脆易碎物; adj, 松脆易碎的
slay:vt, 杀死,残杀
webbed:adj, 有蹼的
tan:adj, 黄褐色的
cream:n, 奶油
breast:n, 乳房,胸部
feather:n, 羽毛
chin strap:n, 下巴托
bill:n, 鸟喙
knight:n, 骑士
chop:vt, 砍下(chop off)
wage:n, 工资
advisor:n, 顾问,指导
doom:n, 厄运,死亡,世界末日
doomed:adj, 注定要完蛋了
相关文章推荐
- poj 3646 The Dragon of Loowater
- POJ 3646 The Dragon of Loowater
- POJ-3646-The Dragon of Loowater
- POJ - 3646 The Dragon of Loowater(贪心)
- POJ 3646 The Dragon of Loowater
- 白皮书:The Dragon of Loowater, UVa 11292,POJ 3646
- poj 3646 The Dragon of Loowater 排序+贪心
- POJ 3646 The Dragon of Loowater G++
- 周赛 POJ 3546 The Dragon of Loowater
- UVa 11292 / POJ 3646 / HDU 1902 Dragon of Loowater (贪心)
- UVA 11292 - Dragon of Loowater
- 【uva 11292】Dragon of Loowater
- UVA 11292 DRAGON OF LOOWATER 【贪心】
- [UVA] 11292 - Dragon of Loowater
- UVA11292 The Dragon of Loowater
- HDU - 1902——The Dragon of Loowater
- uva 11292 Dragon of Loowater
- Dragon of Loowater UVA - 11292 (水)
- UVA - 11292 Dragon of Loowater
- UVA - 11292 Dragon of Loowater