全超时求助(T_T)
查看原帖
全超时求助(T_T)
1445434
AE_Space楼主2025/6/21 09:26

样例过了 答案是对的 求助 避讳管

#include<bits/stdc++.h>
using namespace std;
const int MAXN = 1010;
int n,m,sum,Max,flag;
char a[MAXN][MAXN];
pair<int,int> ZaWuZuoBiaoLieBiao[MAXN*MAXN]; // 改用pair存储坐标

int main(){
    ios::sync_with_stdio(false);
    cin.tie(0);
    
    cin>>n>>m;
    for(int i=0;i<n;i++){
        for(int j=0;j<m;j++){
            cin>>a[i][j];
            if(a[i][j]!='.'){
                ZaWuZuoBiaoLieBiao[flag++] = {i,j};
            }
        }
    }
    for(int x=0;x<flag;x++){
        int ox = ZaWuZuoBiaoLieBiao[x].first;
        int oy = ZaWuZuoBiaoLieBiao[x].second;
        a[ox][oy]='.';
        sum=0;
        for(int i=0;i<n;i++){
            for(int j=0;j<m;j++){
                if(a[i][j]=='.'){
                    bool valid = true;
                    if(i>0 && a[i-1][j]=='#') valid=false;
                    if(i<n-1 && a[i+1][j]=='#') valid=false;
                    if(j>0 && a[i][j-1]=='#') valid=false;
                    if(j<m-1 && a[i][j+1]=='#') valid=false;
                    if(valid) sum++;
                }
            }
        }
        if(sum>Max) Max=sum;
        a[ox][oy]='#';
    }
    printf("%d\n",Max);
    return 0;
}

2025/6/21 09:26
加载中...