47. 【大学】北理工的恶龙

47. 【大学】北理工的恶龙

 

背景:
最近,北理工出现了一只恶龙,它长着很多 头,而且还会吐火,它将会把北理工烧成废墟, 于是,校长下令召集全校所有勇士杀死这只恶龙。要杀死这只龙,必须把它所有的头都砍掉,每个勇士只能砍一个龙头,龙的每个头大小都不一样,一个勇士只有在身高不小于龙头的直径的情况下才能砍下它。而且勇士们要求,砍下一个龙头必须得到和自己身高厘米数一样的学分。校长想花 最少的学分数 杀死恶龙,于是找到你寻求帮助。

输入:
第一行 龙头数 n , 勇士人数 m ( 1<=n, m<=100 ) 接下来 n 行,每行包含一个整数,表示龙头的直径 接下来 m 行,每行包含一个整数,表示勇士的身高 l

 输出:
 如果勇士们能完成任务,输出校长需要花的最小费用;否则输 出 “bit is doomed! ”

  测试输入 期待的输出 时间限制 内存限制 额外进程
测试用例 1 以文本方式显示
  1. 2 3↵
  2. 5↵
  3. 4↵
  4. 7↵
  5. 8↵
  6. 4↵
以文本方式显示
  1. 11↵
1秒 64M 0
测试用例 2 以文本方式显示
  1. 2 1↵
  2. 5↵
  3. 5↵
  4. 10↵
以文本方式显示
  1. bit is doomed!↵
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;
}

 

posted @ 2022-12-14 17:19  我千五可以  阅读(432)  评论(0)    收藏  举报