社区讨论

10pts,求助! -_-,悬赏一关注!

B4263[GESP202503 四级] 荒地开垦参与者 2已保存回复 2

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
2 条
当前快照
1 份
快照标识符
@mceoaw78
此快照首次捕获于
2025/06/27 18:32
8 个月前
此快照最后确认于
2025/11/04 06:56
4 个月前
查看原帖
10pts,求助! -_-,悬赏一关注!
CPP
#include<bits/stdc++.h>
using namespace std;
const int N = 1e3+5;
char a[N][N];
int mp[N][N],n,m;
int ans = 0;
int dx[] = {1,0,-1,0};
int dy[] = {0,1,0,-1};
int main(){
    memset(mp,0,sizeof(mp));
    cin>>n>>m;
    int cnt = 0;
    vector<pair<int,int> > pos;
    for(int i = 1;i<=n;i++){
        for(int j = 1;j<=m;j++){
            cin>>a[i][j];
            if(a[i][j] == '#'){
                pos.push_back(make_pair(i,j));
                mp[i][j]++;
                cnt++;
                for(int k = 0;k<4;k++){
                    int nx = i+dx[k];
                    int ny = j+dy[k];
                    mp[nx][ny]++;
                    if(mp[nx][ny] == 1 && nx>=1 && nx<=n && ny>=1 && ny<=m) cnt++;;
                }
            }
        }
    }
    int c = cnt;
    for(int i = 0;i<pos.size();i++){
        cnt = c;
        int x = pos[i].first;
        int y = pos[i].second;
        cnt--;
        for(int j = 0;j<4;j++){
            int nx = x+dx[j];
            int ny = y+dy[j];
            if(mp[nx][ny]-1 == 0 &&
               nx>=1 && nx<=n &&
               ny>=1 && ny<=m) cnt--;
        }
        ans = max(ans,n*m-cnt);
    }
    cout<<ans<<endl;
    return 0;
}

回复

2 条回复,欢迎继续交流。

正在加载回复...