zoukankan      html  css  js  c++  java
  • uva11292-Dragon of Loowater

    题目大意:

    有头龙有n个头,你雇佣骑士去砍掉这些头,一共有m个骑士,一个骑士对应有一个能力值x,同时x也代表你雇佣他的费用,只有当能力值大于或等于龙头的大小时可以砍掉这个头,你现在需要计算的是杀死这头龙(砍掉所有龙头)最小的雇佣费用。

    输入:

    第一行两个整数,n,m当n,m都为零时结束

    接下来n行为头的大小、在接下来m行是m个骑士的能力值x。

    输出:

    每组数据输出最小的雇佣费用。

    分析:

    这道题目属于贪心,我们应该尽量选择能力值与头大小相近(大于等于)的骑士去砍这个头,这样所需要的费用是最少的,所以可以按骑士的能力值排序(小到大),再将龙头大小排序,然后循环判断是否i骑士可以杀死j龙头,如果可以,则雇佣该骑士。

    分类:简单贪心

    代码:

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    #define maxlen 20010
    using namespace std;
    int n,m;
    int head[maxlen],ability[maxlen];
    int main ()
    {
        while(scanf("%d%d",&n,&m)!=EOF)
        {
            if(n==0&&m==0)
                break;
            for(int i=0;i<n;++i)
                scanf("%d",&head[i]);
            for(int i=0;i<m;++i)
                scanf("%d",&ability[i]);
            sort(head,head+n);
            sort(ability,ability+m);
            int j=0,ans=0;
            for(int i=0;i<m;++i)
            {
                if(ability[i]>=head[j])
                {
                    ans+=ability[i];
                    j++;
                }
                if(j==n)
                    break;
            }
            if(j<n)
                printf("Loowater is doomed!
    ");
            else
                printf("%d
    ",ans);
        }
    
    }
    

      

  • 相关阅读:
    多线程GCD(二)
    多线程
    Runtime & Runloop
    MTK android 重启测试脚本
    ubuntu samba 配置简介
    Gerrit使用简介
    MTK andorid从底层到上层添加驱动
    MTK GPIO 新增变量配置
    MT6755 使用R63350 IC 出现唤醒概率性闪白,并导致ESD FAIL
    android L版本AAL新架构
  • 原文地址:https://www.cnblogs.com/shuzy/p/3178552.html
Copyright © 2011-2022 走看看