zoukankan      html  css  js  c++  java
  • P4771 八百标兵奔北坡

    题目背景

    baingbaboom正在往北边跑!!!

    题目描述

    现在在一张N*M的地图上有K只babingbaboom!!!对于一张地图上的点都有一个 h_{i,j}hi,j 来表示这个地方的高度。现在这些babingbaboom都想要跑到北边的一个山坡上。求出离每一个babingbaboom最近的靠北的山。

    补充定义:

    山:

    山的周围没有比它更高的地方。(四联通)

    在北边:

    令Babingbaboom的坐标为A(a,b)A(a,b),山的坐标为B(x,y)B(x,y),山在Babingbaboom的北边当且仅当dis_{A,B}==a-xdisA,B==ax

    切比雪夫距离:

    A(x_1,y_1) qquad B(x_2,y_2) : qquad dis_{A,B}=max(|x_1 - x_2|, |y_1 - y_2|)A(x1,y1)B(x2,y2):disA,B=max(x1x2,y1y2)

    输入格式

    第1行三个正整数N,M,K。 第2-N+1行每行有M个正整数 h_{i,j}hi,j 。 第N+2-N+K+1行每行有两个正整数X_i,Y_i表示每一个babingbaboom的坐标。

    输出格式

    K行。如果对于每一个babingbaboom存在这样的最近的山(切比雪夫距离),就输出这个babingbaboom到山的切比雪夫距离;否则输出“Pool Babingbaboom!”(不要引号!(我知道可怜的是Poor,但是我就爱写Pool))

    输入输出样例

    输入 #1
    5 5 5
    1 2 3 4 5
    2 3 4 5 1
    3 4 5 1 2
    4 5 1 2 3
    5 1 2 3 4
    1 2
    2 3
    3 4
    4 5
    5 1
    
    输出 #1
    Pool Babingbaboom!
    Pool Babingbaboom!
    1
    2
    0

    说明/提示

    1 leqslant N,M leqslant 1e31N,M1e3

    1 leqslant K leqslant 1e51K1e5

    1 leqslant h_{i,j} leqslant 1e91hi,j1e9

    数据有梯度!

    样例图片(星代表一个Babingbaboom,红色代表一个山):  (竖的是x,横的是y。画的时候没注意,很抱

    歉。)

    #include<iostream>
    #include<iomanip>
    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    using namespace std;
    int n,m,k,h[1005][1005],f[1005][1005];
    
    inline int read(){
        int s=0,w=1;
        char ch=getchar();
        while(ch<'0'||ch>'9'){
            if(ch=='-'){
                w=-1;
            }
            ch=getchar();
        }
        while(ch>='0'&&ch<='9'){
            s=s*10+ch-'0';
            ch=getchar();
        }
        return s*w;
    }
    
    int main(){
        n=read();
        m=read();
        k=read();
        for(int i=1;i<=n;i++){
            for(int j=1;j<=m;j++){
                h[i][j]=read();
            }
        }
        memset(f,0x3f,sizeof(f));
        for(int i=1;i<=n;i++){
            for(int j=1;j<=m;j++){
                if(h[i][j]>h[i-1][j]&&h[i][j]>h[i+1][j]&&h[i][j]>h[i][j+1]&&h[i][j]>h[i][j-1]){
                    f[i][j]=0;
                }
                   else{
                    f[i][j]=min(f[i-1][j],min(f[i-1][j-1],f[i-1][j+1]))+1;
                }
            }
        }
        for(int i=1;i<=k;i++){
            int x,y;
            x=read();
            y=read();
            if(f[x][y]>10000){
                printf("Pool Babingbaboom!
    ");
            }
            else{
                printf("%d
    ",f[x][y]);
            }
        }
    }
  • 相关阅读:
    HDU 2094 产生冠军
    poj 3269 Building A New Barn
    [js
    有感于NC的强大
    was配置oracle RAC集群的数据源
    vb.net 操作xml
    一个用C++写的Json解析与处理库
    配置apache和nginx的tomcat负载均衡
    Remove Duplicates from Sorted Array [Python]
    LoaderManager使用具体解释(一)---没有Loader之前的世界
  • 原文地址:https://www.cnblogs.com/hrj1/p/11774715.html
Copyright © 2011-2022 走看看