算法竞赛入门经典例题-勇者斗恶龙
来源:互联网 发布:arya stark无面者 知乎 编辑:程序博客网 时间:2024/04/30 01:40
最近学习算法竞赛入门经典-训练指南,于是在刷题的同时记录到博客上,以便加深印象,更好的记忆。
例题1.勇者斗恶龙
你的王国里有一条n个头的恶龙,你希望雇佣一些骑士把它杀死(也就是砍掉所有的头)。村里有m个骑士可以雇佣,一个能力值为 x 的骑士可以砍掉恶龙一个直径不超过 x 的头,且需要支付 x 个金币。如何雇佣骑士才能砍掉恶龙所有的头,并且支付最小的金币?注意,一个骑士只能砍一个头并且仅能被雇佣1次
分析:要求是用最少的钱雇佣骑士杀掉所有恶龙,恶龙的数目肯定不得多于骑士的数目,因为每个骑士只能雇佣一次,就算一个骑士能杀掉所有的恶龙。先对每个骑士和龙的能力进行sort排序,然后遍历骑士,用cur表示斩杀掉的龙,每当一个骑士符合条件被雇佣,cur加1,当cur与龙的数目相等的时候就停止。
#include<cstdio>#include<algorithm>using namespace std;const int maxn=20005;int a[maxn],b[maxn];int main(){ int n,m; while(scanf("%d%d",&n,&m)==2&&n&&m){ for(int i=0;i<n;i++) scanf("%d",&a[i]); for(int i=0;i<m;i++) scanf("%d",&b[i]); sort(a,a+n); sort(b,b+m); int cur=0; int cost=0; for(int j=0;j<m;j++){ if(b[j]>=a[cur]){ cost+=b[j]; if(++cur==n) break; } } if(cur<n) printf("Loowater is doomed!\n"); else printf("%d\n",cost); } return 0;}
0 0
- 算法竞赛入门经典例题-勇者斗恶龙
- 算法竞赛入门经典 勇者斗恶龙
- 算法竞赛入门经典 例题9-1
- 算法竞赛入门经典 例题8-1
- 算法竞赛入门经典 例题 9-4
- 算法竞赛入门经典例题-蚂蚁
- 算法经典-勇者斗恶龙
- 算法竞赛入门经典 例题7-1 最优程序
- 算法竞赛入门经典 例题7-2 埃及分数
- 算法竞赛入门经典 例题7-3 倒水问题
- 算法竞赛入门经典 例题9-5 0-1 背包
- 算法竞赛入门经典 例题 9-2 嵌套矩形
- 算法竞赛入门经典 例题9-3 硬币问题
- 算法竞赛入门经典 例题4-2孪生素数
- 算法竞赛入门经典7.5.1例题1最优程序
- 算法竞赛入门经典 例题 3-1 开灯问题
- 算法竞赛入门经典 例题 3-2 蛇形填数
- 算法竞赛入门经典 例题 3-4 回文串
- 【玩转Excel】Oracle PLSQL处理生成XLSX文件
- LeetCode211:Add and Search Word - Data structure design
- javaSE学习笔记之集合
- 分布式消息队列RocketMQ部署与监控
- 指定数字在数组中第一次出现的位置
- 算法竞赛入门经典例题-勇者斗恶龙
- Swift教程-基本类型
- linux驱动之输入子系统
- 解决Linux安装 VMware tools 工具的方法
- android 沉浸式状态栏(像ios那样的状态栏与应用统一颜色样式)
- RocketMQ与Kafka对比
- 性能杀手:”潜伏”的memset
- Linux(树莓派b+)学习~putty远程登录
- iOS 关于objc_setAssociatedObject,objc_getAssociatedObject