6

20250305周赛T4

public
6shootingstar9 Mar 16, 2025 Never 25
Clone
C++ 20250305周赛T4 105 lines (105 loc) | 1.75 KB
1
#include<bits/stdc++.h>
2
using namespace std;
3
const int N=30;
4
int n;
5
char mp[N][N];
6
int vis[N][N];
7
int flag[N];
8
int ans1,ans2,ans;
9
int dx[4]={1,-1,0,0};
10
int dy[4]={0,0,1,-1};
11
void dfs(int x,int y,int a,int b,int c,int d)
12
{
13
for(int i=0;i<4;i++)
14
{
15
int xx=x+dx[i];
16
int yy=y+dy[i];
17
if(xx>=a&&xx<=c&&yy>=b&&yy<=d&&mp[xx][yy]==mp[x][y]&&vis[xx][yy]==0)
18
{
19
vis[xx][yy]=1;
20
dfs(xx,yy,a,b,c,d);
21
}
22
}
23
}
24
int main()
25
{
26
freopen("where.in","r",stdin);
27
freopen("where.out","w",stdout);
28
cin>>n;
29
for(int i=1;i<=n;i++)
30
{
31
for(int j=1;j<=n;j++)
32
{
33
cin>>mp[i][j];
34
}
35
}
36
for(int i=1;i<=n;i++)
37
{
38
for(int j=1;j<=n;j++)
39
{
40
for(int k=i+1;k<=n;k++)
41
{
42
for(int l=j+1;l<=n;l++)
43
{
44
memset(flag,0,sizeof(flag));
45
ans1=0;
46
ans2=0;
47
for(int a=i;a<=k;a++)
48
{
49
for(int b=j;b<=l;b++)
50
{
51
flag[int(mp[a][b]-'A'+1)]=1;
52
}
53
}
54
int num=0;
55
for(int a=1;a<=26;a++)
56
{
57
num+=flag[a];
58
}
59
if(num==2)
60
{
61
char c;
62
for(int a=1;a<=26;a++)
63
{
64
if(flag[a]==1)
65
{
66
c=char(a-1+'A');
67
break;
68
}
69
}
70
for(int a=i;a<=k;a++)
71
{
72
for(int b=j;b<=l;b++)
73
{
74
if(mp[a][b]==c)
75
{
76
if(vis[a][b]==0)
77
{
78
dfs(a,b,i,j,k,l);
79
ans1++;
80
}
81
}
82
else
83
{
84
if(vis[a][b]==0)
85
{
86
dfs(a,b,i,j,k,l);
87
ans2++;
88
}
89
}
90
}
91
}
92
// cout<<ans1<<' '<<ans2<<endl;
93
if((ans1==1&&ans2>=2)||(ans1>=2&&ans2==1))
94
{
95
ans++;
96
// cout<<i<<' '<<j<<' '<<k<<' '<<l<<endl;
97
}
98
}
99
}
100
}
101
}
102
}
103
cout<<ans;
104
return 0;
105
}