嵊州普及Day6T1

题意:有一个矩形,由正负整数构成。一个位子的魅力值为相邻的格子,若与邻格同号则减去绝对值,若异号则加上绝对值。

思路:一个格子一个格子计算即可,没什么好说的。

见代码:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
int n,m,max0=-0x3f3f3f,max1,max2,a[505][505],b[505][505],c[5]={0,-1,1,0,0},d[5]={0,0,0,-1,1};
bool flag[505][505];
int main()
{
    freopen("reven.in","r",stdin);
    freopen("reven.out","w",stdout);
    cin>>n>>m;
    for(int i=1;i<=n;i++)
    for(int j=1;j<=m;j++)
    {
        cin>>a[i][j];
        if(a[i][j]>0)
        flag[i][j]=true;
    }
    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++)
        {
            for(int k=1;k<=4;k++)
            {    
                if(a[i+c[k]][j+d[k]]!=0)
                {
                    if(flag[i+c[k]][j+d[k]]!=flag[i][j])
                    {
                        b[i][j]+=abs(a[i+c[k]][j+d[k]]);
                    }
                    else
                    b[i][j]-=abs(a[i+c[k]][j+d[k]]);
                }
            }
        }
    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++)
        {
            if(b[i][j]>max0)
            {
                max0=b[i][j];
                max1=i;
                max2=j;
            }
        }
    cout<<max1<<" "<<max2<<" "<<max0;
    return 0;
}

好题哉!!!

posted @ 2019-07-16 16:55  青殇  阅读(74)  评论(0编辑  收藏  举报