zoukankan      html  css  js  c++  java
  • 最大高度差

    Problem 3 : 最大高度差

    (altitude.pas/ altitude.in/ altitude.out)

    【问题描述】

        我们把一块山地划分为N x N的小块。你已经知道了每一块地的海拔高度。你需要回答若干个询问。一次询问指定了一块S x S的正方形区域(S是一个已经给定的值),你需要回答出在这个区域里最小海拔高度和最大海拔高度相差多少。

    【输入数据】

        第一行输入三个用空格隔开的正整数n,s,k,表示山地的大小、一次询问的大小和询问的次数。输入数据保证s<=n。

        以下n行为一个N x N的矩阵,该矩阵描述了这个山地的高度情况。这些数字保证是不超过maxint的正整数。

        接下来k行每行两个数x,y,询问以第x行第y列的格子作为左上角的S x S的方格中最大的高度差。输入数据保证输入的x,y有意义。

    【输出数据】

        对于每一个询问,输出询问的区域中高度差的最大值(每个询问的输出均独立占用一行)。

    【样例输入】

    5 3 1

    5 1 2 6 3

    1 3 5 2 7

    7 2 4 6 1

    9 9 8 6 5

    0 6 9 3 9

    1 2

    【样例输出】

    5

    【样例说明】

        输入数据询问子矩阵:

        1 2 6

        3 5 2

        2 4 6

        的最大高度差是多少。

        答案为6-1=5。

    【数据规模】

        对于30%的数据,n<=10,k<=10;

        对于50%的数据,n<=30,k<=100;

        对于100%的数据,n<=100,k<=1000。

    模拟暴力即可。

    #include<iostream>
    using namespace std;
    
    void in(int &x)
    {
        int y=1;
        char c=getchar();x=0;
        while(c>'9'||c<'0')
        {
            if(c=='-')
            y=-1;
            c=getchar();
        }
        while(c>='0'&&c<='9')
        x=x*10+c-'0',c=getchar();
        x*=y;
    }
    
    void out(int x)
    {
        if(x<0)
        {
            putchar('-');
            x=-x;
        }
        if(x>9)out(x/10);
        putchar(x%10+'0');
    }
    
    int n,s,k;
    int a[110][110];
    int main()
    {
        freopen("altitude.in","r",stdin);
        freopen("altitude.out","w",stdout);
        in(n),in(s),in(k);
        for(int i=1;i<=n;i++)
          for(int j=1;j<=n;j++)
            in(a[i][j]);
        int x,y;
        int Min,Max;
        for(int t=1;t<=k;t++)
        {
            Min=0xf77777777;
            Max=0;
            in(x),in(y);
            for(int i=x;i<x+s;i++)
              for(int j=y;j<y+s;j++)
                {
                    Max=max(Max,a[i][j]);
                    Min=min(Min,a[i][j]);
                }
            out(Max-Min),putchar('
    ');
        }
        return 0;
    }
  • 相关阅读:
    Docker 制作定制asp.netcore 的容器
    Windows docker k8s asp.net core
    Ubuntu 18 Kubernetes集群的安装和部署 以及Helm的安装
    ubuntu 18 docker 搭建Prometheus+Grafana
    ubuntn18 docker zabbix+grafana安装和使用
    .net Core MongoDB用法演示
    Ubuntu18 安装搭建Harbor
    ubuntu docker inflxudb(安装 使用 备份 还原 以及python编码) telegraf Grafana
    python selenium爬虫工具
    python selenium IE Firxfor pyinstaller
  • 原文地址:https://www.cnblogs.com/war1111/p/7500500.html
Copyright © 2011-2022 走看看