47. 【大学】北理工的恶龙
背景:
最近,北理工出现了一只恶龙,它长着很多 头,而且还会吐火,它将会把北理工烧成废墟, 于是,校长下令召集全校所有勇士杀死这只恶龙。要杀死这只龙,必须把它所有的头都砍掉,每个勇士只能砍一个龙头,龙的每个头大小都不一样,一个勇士只有在身高不小于龙头的直径的情况下才能砍下它。而且勇士们要求,砍下一个龙头必须得到和自己身高厘米数一样的学分。校长想花 最少的学分数 杀死恶龙,于是找到你寻求帮助。
输入:
第一行 龙头数 n , 勇士人数 m ( 1<=n, m<=100 ) 接下来 n 行,每行包含一个整数,表示龙头的直径 接下来 m 行,每行包含一个整数,表示勇士的身高 l
输出:
如果勇士们能完成任务,输出校长需要花的最小费用;否则输 出 “bit is doomed! ”
测试输入 | 期待的输出 | 时间限制 | 内存限制 | 额外进程 | |
---|---|---|---|---|---|
测试用例 1 | 以文本方式显示
|
以文本方式显示
|
1秒 | 64M | 0 |
测试用例 2 | 以文本方式显示
|
以文本方式显示
|
1秒 | 64M | 0 |
不行了,要笑死了!怎么会有这样的题(狗头)
难度是平凡的,因此
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
int cmpfunc(const void* a, const void* b)
{
return (*(int*)a - *(int*)b);
}
int main(void)
{
/*
* 先读入数据进数组,想要使用malloc,不过不会用~呜呜,流泪!有谁来救救我
* 然后进行排序
* 然后比较选出最小的一个
*/
int credit = 0;
int dragon_head = 0, hero_number = 0;
scanf("%d %d", &dragon_head, &hero_number);
int* p_dragon = (int*)malloc(dragon_head * sizeof(int));
int* p_hero = (int*)malloc(hero_number * sizeof(int));
for (int i = 0; i < dragon_head; i++) scanf("%d", p_dragon + i);
for (int i = 0; i < hero_number; i++) scanf("%d", p_hero + i);
qsort(p_dragon, dragon_head, sizeof(int), cmpfunc);
qsort(p_hero, hero_number, sizeof(int), cmpfunc);
int dra_killed = 0;
for (int i = 0; i < dragon_head; i++)
for (int j = 0; j < hero_number; j++)
if (p_dragon[i] <= p_hero[j]) {
credit += p_hero[j];
p_hero[j] = 0;
dra_killed++;
break;
}
if (dra_killed == dragon_head) printf("%d\n", credit);
else puts("bit is doomed!");
return 0;
}
标签:head,hero,int,47,number,dragon,恶龙,北理工 From: https://www.cnblogs.com/alien-han/p/16982734.html