zoukankan      html  css  js  c++  java
  • Uva 11292 The Dragon of Loowater 模拟题

    题目大意:你的王国里有一条有n个头的恶龙,你希望雇一些骑士来把它杀死(即砍掉所有的头)。村里有m个骑士可以雇佣,一个能力值为x的骑士可以砍掉恶龙一个直径不超过x的头,且需要支付x个金币。如何雇佣骑士才能砍掉恶龙所有的头,且需要支付的金币最少?注意,一个骑士只能砍一个头(且不能被雇佣两次)。输出最少的花费,如果无解,输出“Loowater is doomed!".

    解题报告:模拟题,先把所有的恶龙的头的直径和所有的骑士的能力值排一下序,然后一一从前往后比较,当当前的这个骑士可以砍掉当前的这个头的时候,就雇佣这个骑士。可以先定义两个指针,分别指向当前的恶龙的头和当前的骑士,若雇佣成功,则将两个指针都往后移动一位,若雇佣不成功,则将骑士的指针往后移动一位。

     1 #include<cstdio>
     2 #include<algorithm>
     3 #include<cmath>
     4 int main() {
     5     int n,m,sum,x[20005],r[20005];
     6     while(scanf("%d%d",&n,&m)&&(n||m)) {
     7         for(int i=1;i<=n;++i)
     8         scanf("%d",&r[i]);
     9         for(int i=1;i<=m;++i)
    10         scanf("%d",&x[i]);
    11         std::sort(r+1,r+n+1);
    12         std::sort(x+1,x+m+1);
    13         int y=1,z=1;
    14         sum=0;
    15         while(1) {
    16             if(r[y]<=x[z]) {
    17                 sum+=x[z];
    18                 y++;
    19                 z++;
    20             }
    21             if(r[y]>x[z])
    22             z++;
    23             if(z>m||y>n)
    24             break;
    25         }
    26         if(sum==0||y!=n+1)
    27         printf("Loowater is doomed!\n");
    28         else
    29         printf("%d\n",sum);
    30     }
    31     return 0;
    32 }
    View Code
  • 相关阅读:
    Mysql 设置变量的几种方式
    Mysql Alter table 操作
    Truncate有外键约束的表
    Mysql ESCAPE 用法
    Jquery checkbox operation
    Mysql 根据URL获取顶级域名
    MySQL分区表操作
    TIB工作室动态今后将发布在 http://www.automationqa.com/ , 敬请关注!
    TestPartner资源列表
    如何开始学习一个自动化测试工具?
  • 原文地址:https://www.cnblogs.com/xiaxiaosheng/p/3114217.html
Copyright © 2011-2022 走看看