2 条题解
-
1
#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
- 上传者