3 条题解
-
1
#include<bits/stdc++.h> #define ll long long #define un unsigned #define int long long #define db double #define inf 1000000000000000 #define st string #define ct const #define xh(a,b,c) for(int a=b;a<=c;a++) #define wx while(1) #define dn(a,b,c) for(int a=b;a>=c;a--) using namespace std; ll max(ll x,ll y){ return x>y?x:y; } ll min(ll x,ll y){ return x<y?x:y; } int n; char a[40][40]; bool f[40][40]; int ans; int tx[]={0,0,-1,1}; int ty[]={1,-1,0,0}; void dfs(int x,int y){ f[x][y]=1; xh(i,0,3){ int X=x+tx[i],Y=y+ty[i]; if(!f[X][Y]&&a[X][Y]=='.')dfs(X,Y); } } signed main(){ cin>>n; xh(i,1,n)xh(j,1,n)cin>>a[i][j]; dfs(1,1); xh(i,1,n){ xh(j,1,n){ if(!f[i][j])continue; xh(i1,0,3){ int X=i+tx[i1],Y=j+ty[i1]; if(a[X][Y]=='#'||!X||X==n+1||!Y||Y==n+1)ans++; } } } cout<<(ans-4)*9; return 0; }后记:楼下这位,不许ctj!!!!!
-
0
//今天不吃蛆 吃tj!!! #include<bits/stdc++.h> #define f(i,l,r) for(int i=l;i<=r;i++) #define fx(i,l,r) for(int i=l;i<r;i++) using namespace std; int n; char a[105][105]; bool b[105][105],c[105][105],d[105][105]; int ans; bool yuejie(int x,int y){ if(x>=0&&x<=n&&y>=0&&y<=n) return 1; return 0; } void dfs(int x,int y){ if(b[x][y]||!yuejie(x,y)) return; b[x][y]=1; if(a[x][y]=='#'){ c[x][y]=1;return; } dfs(x-1,y);dfs(x,y-1); dfs(x,y+1);dfs(x+1,y); return; } void z(int x,int y){ if(yuejie(x-1,y)&&a[x-1][y]=='.'&&b[x-1][y]) ans++; if(yuejie(x,y-1)&&a[x][y-1]=='.'&&b[x][y-1]) ans++; if(yuejie(x,y+1)&&a[x][y+1]=='.'&&b[x][y+1]) ans++; if(yuejie(x+1,y)&&a[x+1][y]=='.'&&b[x+1][y]) ans++; return; } int main(){ ios::sync_with_stdio(0); cin.tie(0);cout.tie(0); cin>>n; f(i,1,n){ cin>>a[i]; for(int j=n;j>=1;j--){ a[i][j]=a[i][j-1]; } a[i][0]=' '; } f(i,2,n+1){ a[i][0]='#'; } f(i,0,n-1){ a[i][n+1]='#'; } f(j,1,n){ if(j!=1) a[0][j]='#'; if(j!=n) a[n+1][j]='#'; } n++; dfs(1,1);dfs(n,n); f(i,0,n){ f(j,0,n){ if(c[i][j]==1) z(i,j); } } cout<<ans*9; } -
-1
//搜一下终点和终点,dfs即可 #include<bits/stdc++.h> #define f(i,l,r) for(int i=l;i<=r;i++) #define fx(i,l,r) for(int i=l;i<r;i++) using namespace std; int n; char a[105][105]; bool b[105][105],c[105][105],d[105][105]; int ans; bool yuejie(int x,int y){ if(x>=0&&x<=n&&y>=0&&y<=n) return 1; return 0; } void dfs(int x,int y){ if(b[x][y]||!yuejie(x,y)) return; b[x][y]=1; if(a[x][y]=='#'){ c[x][y]=1;return; } dfs(x-1,y);dfs(x,y-1); dfs(x,y+1);dfs(x+1,y); return; } void z(int x,int y){ if(yuejie(x-1,y)&&a[x-1][y]=='.'&&b[x-1][y]) ans++; if(yuejie(x,y-1)&&a[x][y-1]=='.'&&b[x][y-1]) ans++; if(yuejie(x,y+1)&&a[x][y+1]=='.'&&b[x][y+1]) ans++; if(yuejie(x+1,y)&&a[x+1][y]=='.'&&b[x+1][y]) ans++; return; } int main(){ ios::sync_with_stdio(0); cin.tie(0);cout.tie(0); cin>>n; f(i,1,n){ cin>>a[i]; for(int j=n;j>=1;j--){ a[i][j]=a[i][j-1]; } a[i][0]=' '; } f(i,2,n+1){ a[i][0]='#'; } f(i,0,n-1){ a[i][n+1]='#'; } f(j,1,n){ if(j!=1) a[0][j]='#'; if(j!=n) a[n+1][j]='#'; } /*f(i,0,n+1){ f(j,0,n+1){ cout<<a[i][j]; } cout<<endl; }*/ n++; dfs(1,1);dfs(n,n); f(i,0,n){ f(j,0,n){ if(c[i][j]==1) z(i,j); } } cout<<ans*9; return 0; }
- 1
信息
- ID
- 246
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 7
- 标签
- (无)
- 递交数
- 344
- 已通过
- 79
- 上传者