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

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!”。

题目链接

注释代码:

/*
* 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, 注定要完蛋了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: