zoukankan      html  css  js  c++  java
  • 骑士的工作

    题目背景

    你作为一个村的村长,保卫村庄是理所当然的了.今天,村庄里来了一只恶龙,他有n个头,恶龙到处杀人放火。你着急了。不过天无绝人之路,现在来了一个骑士团。里面有m位成员(往下看)

    题目描述

    每个人都可以砍掉一个大小不超过(<=)z的头,要money个金币,求最小花费。

    输入输出格式

    输入格式:

    第一行两个整数 n m

    下接n行,一个整数 表示n个头的大小。

    下接m行,每个人可以砍的头大小或金币(金币==头的大小)。

    输出格式:

    一个整数,最小花费。如果无解,输出“you died!”

    输入输出样例

    输入样例#1: 
    2 3
    5 
    4
    7 
    8
    4
    输出样例#1: 
    11

    说明

    1<=n,m<=20000

    分析:

    贪心的基础题,将两者分别排序,然后扫一遍b,用一个指针对应指a,如果当前位置可以做到,就把指针后移一位。

    CODE:

     1 #include<cmath>
     2 #include<cstdio>
     3 #include<cstring>
     4 #include<iostream>
     5 #include<algorithm>
     6 using namespace std;
     7 const int M=200005;
     8 int n,m;
     9 int a[M],b[M],ans;
    10 int cnt=1;
    11 inline int get(){
    12     char c=getchar();
    13     int res=0;
    14     while (c<'0'||c>'9') c=getchar();
    15     while (c>='0'&&c<='9'){
    16         res=(res<<3)+(res<<1)+c-'0';
    17         c=getchar();
    18     }
    19     return res;
    20 }
    21 int main() {
    22     n=get(),m=get();
    23     for (int i=1;i<=n;i++) a[i]=get();
    24     for (int i=1;i<=m;i++) b[i]=get();
    25     sort(a+1,a+n+1);
    26     sort(b+1,b+m+1);
    27     for (int i=1;i<=m&&cnt<=n;i++)
    28         if (b[i]>=a[cnt]) cnt++,ans+=b[i];
    29     if (cnt<=n) cout<<"you died!"<<endl;
    30     else cout<<ans<<endl;
    31     return 0;
    32 }
  • 相关阅读:
    mac 切换 默认xcode 版本
    mac 查看jenkins 管理员密码地址
    解决 mac ox 终端显示bogon 的问题
    eclipse 修改默认作者信息
    mac 查看 本地网络代理
    appium 解决 启动case 时不 重装 setting 和 unlock.apk的解决方案实践
    appium 输入时间慢的解决方案
    命令 关闭 appium 命令
    解决 appium could not start ios-webkit-debug-proxy
    PPT总结
  • 原文地址:https://www.cnblogs.com/kanchuang/p/11150284.html
Copyright © 2011-2022 走看看