勇者斗恶龙

简介: 版权声明:您好,转载请留下本人博客的地址,谢谢 https://blog.csdn.net/hongbochen1223/article/details/49795623 (一):勇者斗恶龙你的王国有一条n个头的恶龙,你希望顾一些骑士把他杀死(即砍掉所有的头)。
版权声明:您好,转载请留下本人博客的地址,谢谢 https://blog.csdn.net/hongbochen1223/article/details/49795623

(一):勇者斗恶龙

你的王国有一条n个头的恶龙,你希望顾一些骑士把他杀死(即砍掉所有的头)。村中有m个骑士可以雇佣,一个能力值位x的骑士可以砍掉恶龙一个直径不超过x的头,且需要支付x个金币。如何雇佣骑士才能砍掉恶龙的所有的头,且需要支付的金币最少?注意,一个骑士只能砍一个头(且不能被雇佣两次)。

【输入格式】
输入包含多组数据。每组数据的第一行为正整数n和m(1 <= n,m <= 20000);以下n行每行为一个整数,即恶龙每个头的直径;以下m行每行为一个整数,即每个骑士的能力。输入结束标志为n = 0,m = 0

【输出格式】
对于每组数据,输出最少花费。如果无解,输出”Loowater is doomed!”。

【样例输入】
2 3
5
4
7
8
4
2 1
5
5
10
0 0

【样例输出】
11
Loowater is doomed!

(二):分析

由于需要求得最小花费,而且骑士的能力和龙头的大小是对应的,所以需要将骑士的能力和龙的大小从小到大排列,然后进行一一匹配,如果骑士的能力超过龙头的大小,则可以雇佣,如果不行,就不能雇佣。当所有的骑士都被匹配了,再查看是否所有的龙头也都被匹配了。

(三):代码实现


#include <stdio.h>
#include <stdlib.h>

int cmp(const void* a,const void* b)
{
    const int *arg1 = a;
    const int *arg2 = b;

    return *arg1 - *arg2;
}

int main()
{
    int n,m;
    int i,j;

    while(1){
        scanf("%d%d",&n,&m);

        if(n == 0 && m == 0)
            break;

        int *ns,*ms;
        ns = (int *)malloc(n * sizeof(int));
        ms = (int *)malloc(m * sizeof(int));

        for(i = 0;i < n;i++)
            scanf("%d",&ns[i]);

        for(i = 0;i < m;i++)
            scanf("%d",&ms[i]);

        qsort(ns,n,sizeof(int),cmp);
        qsort(ms,m,sizeof(int),cmp);

        int cur = 0; //需要砍掉的头的编号
        int cost = 0; //当前总费用

        for(i = 0;i < m;i++)
        {
            if(ms[i] >= ns[cur])
            {
                cost += ms[i];
                if(++cur == n) break;
            }
        }

        if(cur < n) printf("Loowater is doomed!\n");
        else printf("%d\n",cost);   
    }   

    return 0;
}

(四):程序运行结果

这里写图片描述

目录
相关文章
|
开发工具 git
Gitlab/GitHub:迁移代码,并保留历史记录
Gitlab/GitHub:迁移代码,并保留历史记录
815 0
Gitlab/GitHub:迁移代码,并保留历史记录
CompletableFuture在超时后,能够停止执行吗?
CompletableFuture在超时后,能够停止执行吗?
177 0
|
8月前
|
Java
蓝易云 - HTTP的并发连接限制和连接线程池
这两个概念在网络编程中是相互关联的。如果并发连接数过多,而线程池的大小又不足以处理这些连接,服务器可能会变得不稳定,甚至崩溃。因此,合理地设置并发连接限制和线程池大小对于保持服务器的稳定性和高效性至关重要。
76 0
|
8月前
|
机器学习/深度学习 数据可视化 数据挖掘
R语言软件对房屋价格预测:回归、LASSO、决策树、随机森林、GBM、神经网络和SVM可视化|数据分享
R语言软件对房屋价格预测:回归、LASSO、决策树、随机森林、GBM、神经网络和SVM可视化|数据分享
|
数据可视化
RNAseq|构建预后模型后你还需要这些图,森林图,诺莫图,校准曲线,DCA决策曲线
RNAseq|构建预后模型后你还需要这些图,森林图,诺莫图,校准曲线,DCA决策曲线
386 0
|
传感器 监控 安全
如何理解企业安全能力框架-IPDRR
企业安全能力框架(IPDRR)是美国国家标准与技术研究所(National Institute of Standards and Technology)的网络安全框架(简称NISTCSF )。第一个版本于2014年发布,旨在为寻求加强网咯安全防御的组织提供指导。企业可以根据自身需求加强网络安全防御。
338 0
|
前端开发 安全 编译器
Git分支管理与常用命令
Git分支管理与常用命令
222 0
|
JavaScript 开发工具 git
vue2 实现后台管理系统左侧菜单联动实现 tab根据路由切换联动内容
vue2 实现后台管理系统左侧菜单联动实现 tab根据路由切换联动内容
237 0
|
Java Linux
Java 获取文件的创建时间
首先,我不得不吐槽一下网上的代码,垃圾中的垃圾!打开一个帖子都是一样的,打开一个一样的,不想说些什么了,而且还有的是依靠 cmd dir 命令,服了,要是正在linux里怎么用?代码先这样,还没来得及时间整理,这个代码是我自己琢磨的,希望可以帮助大家。
207 0
|
存储 数据安全/隐私保护 C++
SCL与STL的区别,16个SCL常见问题及解答
SCL与STL的区别,16个SCL常见问题及解答
SCL与STL的区别,16个SCL常见问题及解答