• NOIP模拟赛 隔壁


    问题描述:

    隔壁学校地形图可以通过一个高度矩阵表示,矩阵中每一个位置都有一个数0<=hij<=10^5表示这个坐标的海拔,我们姑且将其称为海拔图,容易发现,我们可以通过这个矩阵轻松算出隔壁学校的主视图,左视图。
        相反的,我们却不能通过主视图和左视图唯一确定海拔图,现在问题来了,已知主视图左视图,我们需要知道铲平隔壁学校的代价上限和下限(即可能的体积最大值与最小值)

    输入:

    第一行两个数n,m,分别表示海拔图的长和宽。
    第二行n个数,描述了主视图每一个位置的高度。
    第三行m个数,描述了左视图每一个位置的高度

    输出:

    一行两个数,分别表示代价最小值与最大值。

    样例输入:

    2 2
    1 1
    1 1

    样例输出:

    2 4

    样例解释:

    最大最小值对应的海拔图分别为:
    1 1
    1 1

    1 0
    0 1

    数据范围:

    对于10%的数据,满足n=m=1
    对于10%的数据,满足n=m=2
    对于另外20%的数据,满足1<=n,m<=3且0<=hij<=3
    对于100%的数据,满足1<=n,m<=1000,且0<=hij<=1000

    题解:水题,搞一搞就可以了

    #include<stdio.h>
    #include<string.h>
    #define buf 1001
    inline int dmin(int x,int y){
        if(x<y)
            return x;
        return y;
    }
    inline void F(int &x){
        x=0;int c=getchar(),f=1;
        for(;c<48||c>57;c=getchar())
            if(!(c^45))
                f=-1;
        for(;c>47&&c<58;c=getchar())
            x=(x<<1)+(x<<3)+c-48;
        x*=f;
    }
    long long mxn,mnn;
    int n,m,c[buf],l[buf],t[buf];
    int main(){
        freopen("neighbor.in","r",stdin),
        freopen("neighbor.out","w",stdout);
        F(n),
        F(m);
        for(int i=1;i<=n;i++)
            F(c[i]),
            mnn+=c[i],
            t[c[i]]++;
        for(int j=1;j<=m;j++){
            F(l[j]);
            if(t[l[j]])
                t[l[j]]--;
            else mnn+=l[j];
        }
        for(int i=1;i<=n;i++)
            for(int j=1;j<=m;j++)
                mxn+=dmin(c[i],l[j]);
        printf("%I64d %I64d
    ",mnn,mxn);
        fclose(stdin),
        fclose(stdout);
    }
  • 相关阅读:
    详解Javascript匿名函数的使用 转载自IT EYE Blog
    漂亮、免费和响应式HTML5网站模板 转
    Truth, Equality and JavaScript
    Ember.js 示例
    UX Pin 一款在线界面设计网站
    关于工资的三个秘密
    Semantic Versioning 如何进行版本管理
    CSSS CSS幻灯片
    oracle 导入数据报600错误
    Android 初步Android文件目录介绍
  • 原文地址:https://www.cnblogs.com/keshuqi/p/6067169.html
Copyright © 2020-2023  润新知