算法竞赛入门经典例题-勇者斗恶龙

原创 2015年07月06日 20:14:30
   最近学习算法竞赛入门经典-训练指南,于是在刷题的同时记录到博客上,以便加深印象,更好的记忆。

例题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;
}

相关文章推荐

常用排序算法总结8一一基数排序

基数排序(英语:Radix Sort)是一种非比较型整数排序算法,其原理是将整数按位数切割成不同的数字,然后按每个位数分别比较。由于整数也可以表达字符串(比如名字或日期)和特定格式的浮点数,所以基数排...

(C语言)oracle笔试题目,蛇形矩阵的一种简单的解决方法

1. 请用C语言实现  输入N,打印N*N矩阵 比如N=3,打印:        1   2   3      8   9   4      7   6   5   N=4,打印: 1...
  • lxkuk
  • lxkuk
  • 2013年10月04日 22:44
  • 535

算法入门训练之南——1.11勇者斗恶龙

算法入门训练之南——1.11勇者斗恶龙你的王国里有一条n头的巨龙,你希望雇一些骑士把它杀死(即砍掉所有头)。村里有m个骑士可以雇佣,一个能力值为x的骑士可以砍掉恶龙一个直径不超过x的头,且需要支付x个...

勇者斗恶龙【JAVA算法实现】

题目描述 在你的王国里有一条n个头的恶龙,你希望雇一些骑士把它杀死(即砍掉所有头)。村里有m个骑士可以雇佣,一个能力值为m的骑士可以砍掉一个直径不超过x的头,且需要支付x个金币。如何雇佣骑士才能砍掉...

C# 打飞机 游戏。勇者斗恶龙

  • 2011年06月27日 01:43
  • 289KB
  • 下载

勇者斗恶龙

  • 2015年10月14日 13:42
  • 50KB
  • 下载

勇者斗恶龙(BFS)

第四届程序设计大赛 勇者斗恶龙 Time Limit:1000MS  Memory Limit:65536K Total Submit:57 Accepted:16 Description 有...

基于Ruby的勇者斗恶龙游戏

  • 2015年01月19日 11:35
  • 38.28MB
  • 下载

C#写的勇者斗恶龙游戏源代码

  • 2011年01月01日 15:08
  • 296KB
  • 下载

ZCMU-1017: 勇者斗恶龙

解题思路 step1:输入龙、骑士的能力值 step2:对龙、骑士的能力按照从小到大的顺序排列 step3:针对龙的每个头的能力大小,得到一个花费最小的骑士,统计总共有多少头能被杀死 step...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:算法竞赛入门经典例题-勇者斗恶龙
举报原因:
原因补充:

(最多只允许输入30个字)