zoukankan      html  css  js  c++  java
  • 勇者斗恶龙(The Dragon of Loowater,UVa 11292 )


    题目:
      你的王国里有一条n 个头的恶龙,你希望雇一些骑士把它杀死(即砍掉所有头)。村里有m 个骑士可以雇佣,一个能力值为x 的骑士可以砍掉恶龙一个直径不超过x 的头,且需要支付x 个金币。如何雇佣骑士才能砍掉恶龙的所有头,且需要支付的金币最少? 注意,个骑士只能砍一个头(且不能被雇佣两次)。
    
    [输入格式]
      输入包含多组数据。每组数据的第一行为正整数n和m (1<=n,m<=20000) ,以下n行,每行为一个整数,即恶龙每个头的直径; 以下m 行每行为一个整数,即每个骑士的能力。输入结束标志为n=m=0.
    
    [输出格式]
      对于每组数据,输出最少花费。如果无解,输出“Loowater is doomed!"
    
    [样例输入]
    
      2  3
    
       5
    
       4
    
       7
    
       8
    
       4
    
       2  1
    
       5
    
       5
    
       10
    
       0  0
    
    [样例输出]
    
       11
    
       Loowater is doomed!
      把骑士按照能力从小到大排序,头按照直径从小到大排序
     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 const int MAXN=20000+20;
     4 int a[MAXN],b[MAXN];
     5 int main(){
     6     int n,m;
     7     while(scanf("%d %d",&n,&m)==2&&n&&m){
     8         for(int i=0;i<n;i++)    scanf("%d",&a[i]);
     9         for(int j=0;j<m;j++)    scanf("%d",&b[j]);
    10         sort(a,a+n);
    11         sort(b,b+m);
    12         int cur=0;                            //当前需要砍头的编号 
    13         int cost=0;                        //当前总费用
    14         for(int i=0;i<m;i++)
    15             if(b[i]>=a[cur]){                //雇佣该骑士 
    16                 cost+=b[i];        
    17                 if(cur++==n)    break;        //如果头以及砍完,及时退出 
    18             } 
    19         if(cur<n)    printf("Loowater is doomed!
    ");
    20         else printf("%d
    ",cost); 
    21     }
    22     return 0;
    23 } 
  • 相关阅读:
    mysql基础知识
    spring-jdbcTemplet 连接数据源(基础)
    mybatis-----的延迟加载-----缓存(一级缓存和二级缓存)
    第一次使用 idea,mybatis 获取 数据库 中的 数据 2017-9-14
    初识过滤器
    使用 Commens-FileUpload 组件实现文件上传
    简单 servlet 的使用
    QQ数据库管理-----mysql
    mysql 的使用
    json 解析
  • 原文地址:https://www.cnblogs.com/ZKYAAA/p/12459313.html
Copyright © 2011-2022 走看看