zoukankan      html  css  js  c++  java
  • 隔壁(贪心)

    隔壁

    背景:
    Cax军训了,隔壁某世界二流学校开始搞事情,派遣cax军训观光团前来扰乱士气,经过严密筹划,cax决定为民除害,直接用拖拉机铲平隔壁学校。
    题目描述:
    隔壁学校地形图可以通过一个高度矩阵表示,矩阵中每一个位置都有一个数0≤h(i,j) ≤10^5表示这个坐标的海拔,我们姑且称之为海拔图,容易发现,我们可以通过这个矩阵轻松地算出隔壁学校的主视图,左视图,相反的,我们却不能通过主视图和左视图唯一确定海拔图,现在问题来了,已知主视图,左视图,我们需要知道铲平隔壁的代价上限与下限(即可能的体积最大值与最小值)
    输入描述:
    第一行两个数n,m,分别表示海拔图的长和宽
    第二行n个数,描述了主视图每一个位置的高度
    第二行m个数,描述了左视图每一个位置的高度
    输出描述:
    一行两个数,分别表示代价最小值与最大值
    样例输入:
    2 2
    1 1
    1 1
    样例输出:
    2 4
    数据范围:
    对于10%的数据,满足n=m=1
    对于另外10%的数据,满足n=m=2
    对于另外20%的数据,满足1≤n,m≤3且0≤h(i,j) ≤3
    对于100%的数据,满足1≤n,m≤1000且0≤h(i,j) ≤1000

    #include<iostream>
    #include<cstdio>
    using namespace std;
    const int maxn=1010;
    int n,m,l[maxn],d[maxn];
    bool flag[maxn];
    int min_ans()
    {
        int ans=0;
        for(int i=1;i<=n;i++)
        {
            bool can=0;
            for(int j=1;j<=m;j++)
            if(l[i]==d[j]&&!flag[j])
            {
                ans+=l[i];
                flag[j]=1;
                can=1;
                break;
            }
            if(!can)
            ans+=l[i];
        }
        for(int i=1;i<=m;i++)
        if(!flag[i])
        ans+=d[i];
        return ans;
    }
    int max_ans()
    {
        int ans=0;
        for(int i=1;i<=n;i++)
          for(int j=1;j<=m;j++)
          ans+=min(l[i],d[j]);
        return ans;
    }
    int main()
    {
        cin>>n>>m;
        for(int i=1;i<=n;i++)
        cin>>l[i];
        for(int i=1;i<=m;i++)
        cin>>d[i];
        cout<<min_ans()<<" "<<max_ans();
        return 0;
    }
  • 相关阅读:
    用XYNTService把Python程序变为服务
    今天被坑了,而且被坑的好爽! 该死的UTF-8 有 BOM 格式编码
    php 图片上传 500 Internal Server Error 错误
    Linux下 PHP 安装pecl_http方法
    PHP压缩html网页代码原理(清除空格,换行符,制表符,注释标记)
    一段代码让DedeCMS完美兼容PHP5.4
    win7+ oracle +php环境的搭建
    在netbeans下使用调试PHP的插件XdeBug
    使用webbench做压力测试
    ubuntu 13.04 nginx.conf 配置详解
  • 原文地址:https://www.cnblogs.com/cax1165/p/6070932.html
Copyright © 2011-2022 走看看