半江瑟瑟半江红(再悬1关)
查看原帖
半江瑟瑟半江红(再悬1关)
1279276
wpx_楼主2025/6/27 12:44

60分

#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,m;
char a[1005][1005];
int q[1000005];
int  p[1000005];
int qp,hp;
int wyy(int h,int p){
    int sum=0;
    if(a[h-1][p]=='#')sum++;
    if(a[h][p-1]=='#')sum++;
    if(a[h][p+1]=='#')sum++;
    if(a[h+1][p]=='#')sum++;
    return sum;
}
int jbl(int h,int p){
    int sum=0;
    if(a[h-1][p]=='$')sum++;
    if(a[h][p-1]=='$')sum++;
    if(a[h][p+1]=='$')sum++;
    if(a[h+1][p]=='$')sum++;
    return sum;
}
signed main(){
    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]=='#'){
                q[++qp]=i;
                p[qp]=j;
            }
        }
    }
    if(qp==0){
        cout<<n*m<<'\n';
        return 0;
    }
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            int w=wyy(i,j);
            if(w==0&&a[i][j]!='#'){
                hp++;
                a[i][j]='*';
            }else if(w==1&&a[i][j]!='#'){
                a[i][j]='$';
            }
        }
    }
    int MAX=0;
    for(int i=1;i<=qp;i++){
        MAX=max(jbl(q[i],p[i]),MAX);
    }
            cout<<MAX+hp+1<<'\n';
    return 0;
}
2025/6/27 12:44
加载中...