UVa 11292 Dragon of Loowater 贪心+排序

通过贪心算法解决骑士砍龙问题,实现最小花费雇佣骑士砍掉所有龙的目标。使用C++编程语言实现,包括输入骑士与龙的能力值并进行排序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目大意:
有一堆待砍掉的龙和一定能力值的骑士,雇佣骑士的费用等于骑士的能力值,求雇佣这些骑士的最低费用

大致思路:
贪心,将龙和骑士从小到大排序,
贪心原理
对应每一条龙,能砍掉龙的能力值最低的骑士就雇佣。

c++:

#include<cstdio>
#include<algorithm>
using namespace std;
const int MAXN=20000+10;
int dragon[MAXN],knight[MAXN];
int main(){
    int m,n;
    while(scanf("%d%d",&m,&n)!=EOF){
        if(m==0&&n==0)
            break;
        for(int i=0;i<m;i++)
            scanf("%d",&dragon[i]);
        for(int i=0;i<n;i++)
            scanf("%d",&knight[i]);
        sort(dragon,dragon+m);
        sort(knight,knight+n);
        int j=0,ans=0,killed=0;
        for(int i=0;i<m;i++){
            while(j!=n&&knight[j]<dragon[i])
                j++;
            if(j==n)
                break;
            else if(knight[j]>=dragon[i]){
                ans+=knight[j];
                killed++;
                j++;           //砍完后就要轮到下一个骑士了
            }
        }
        if(killed==m)          //如果都砍完了
            printf("%d\n",ans);
        else
            printf("Loowater is doomed!\n");
    }
    return 0;
}
资源下载链接为: https://pan.quark.cn/s/abbae039bf2a 在IT领域,序列化是将对象的状态转换为可存储或传输的形式的过程,而反序列化则是将这种形式恢复为原始对象。本文将深入探讨四种常用的序列化工具:Gson、Jackson、FastJson和ProtoBuf,以及与ProtoBuf相关的proto.exe工具。 Gson(Google Gson):Gson是Google提供的Java库,用于将Java对象转换为JSON字符串,反之亦然。它使用简单,支持复杂的类型转换,包括泛型、枚举、自定义序列化和反序列化策略。Gson的优势在于其灵活性和强大的类型处理能力,使得处理JSON数据非常便捷。 Jackson(FasterXML Jackson):Jackson是另一个流行的Java JSON库,提供流式API、树模型和数据绑定等多种方式来处理JSON。Jackson以其速度和效率著称,支持注解和配置,适应不同的序列化需求。其数据绑定特性允许直接将JSON映射到Java对象,简化了JSON处理。 FastJson(阿里巴巴FastJson):FastJson是阿里巴巴开发的高性能JSON库,支持Java对象与JSON之间的转换。它以极快的速度和较低的内存消耗而闻名,特别适合处理大数据量的场景。FastJson提供简单的API,使得在Java中操作JSON变得直观且高效。 ProtoBuf(Protocol Buffers):ProtoBuf是Google开发的数据序列化协议,将结构化数据序列化为二进制格式,便于存储和网络传输。相比于JSON和XML,ProtoBuf的数据体积更小,解析速度更快。proto.exe是ProtoBuf的编译器,可以将.proto文件编译成不同语言(如Java、Python、C++)的源代码,使得在这些语言中可以直接使用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值