2 条题解

  • 1
    @ 2025-9-22 20:38:05
    #include<bits/stdc++.h>
    #define ll long long
    using namespace std;
    const int N=1e3+10;
    const int INF=0x3f3f3f3f;
    inline int read(){ll x=0,f=1;char ch=getchar();while (ch<'0'||ch>'9'){if (ch=='-') f=-1;ch=getchar();}while (ch>='0'&&ch<='9'){x=x*10+ch-48;ch=getchar();}return x*f;}
    ll n,m,cnt,dx[4]={1,-1,0,0},dy[4]={0,0,-1,1},sum,ans;
    char a[N][N];
    bool check(ll x,ll y){
        for(int i=0;i<4;i++){
            ll xx=x+dx[i],yy=y+dy[i];
            if(xx>=1&&xx<=n&&yy>=1&&yy<=m&&a[xx][yy]=='#'){
            	return 0;
    		}
        }
        return 1;
    }
    int main(){
    	//freopen(".in","r",stdin);
    	//freopen(".out","w",stdout);
        cin>>n>>m;
        for(int i=1;i<=n;i++){
        	for(int j=1;j<=m;j++){
        		cin>>a[i][j];
    		}
    	}
        for(int i=1;i<=n;i++){
        	for(int j=1;j<=m;j++){
            	if(a[i][j]=='.'&&check(i,j)){
            		cnt++;
    			}
    			else if(a[i][j]=='#'){
                    a[i][j]='.';
                    sum=0;
                    if(check(i,j)){
                    	sum++;
    				}
                    for(int k=0;k<4;k++){
                        ll xx=i+dx[k],yy=j+dy[k];
                        if(xx>=1&&xx<=n&&yy>=1&&yy<=m&&a[xx][yy]=='.'&&check(xx,yy)){
                        	sum++;
    					}
                    }
    				a[i][j]='#';
                }
                ans=max(ans,sum);
        	}
    	}
        cout<<ans+cnt;
    }
    
    

    信息

    ID
    3314
    时间
    1000ms
    内存
    256MiB
    难度
    8
    标签
    递交数
    93
    已通过
    15
    上传者