QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#521726#7733. Cool, It’s Yesterday Four Times Moreliqingyang#WA 1ms3668kbC++171.4kb2024-08-16 14:13:362024-08-16 14:13:36

Judging History

你现在查看的是最新测评结果

  • [2024-08-16 14:13:36]
  • 评测
  • 测评结果:WA
  • 用时:1ms
  • 内存:3668kb
  • [2024-08-16 14:13:36]
  • 提交

answer

#include<iostream>
#include<bitset>
using namespace std;
int T,n,m;
bitset<1010> f;
inline bool bfs(int S)
{
	bitset<1010> mark;
	static int q[1010];
	int l=1,r=0;
	mark.set(q[++r]=S);
	while(l<=r)
	{
		int now=q[l++];
		if(now>m&&f.test(now-m)&&!mark.test(now-m))
		{
			mark.set(q[++r]=now-m);
		}
		if(now<=(n-1)*m&&f.test(now+m)&&!mark.test(now+m))
		{
			mark.set(q[++r]=now+m);
		}
		if((now-1)%m&&f.test(now-1)&&!mark.test(now-1))
		{
			mark.set(q[++r]=now-1);
		}
		if((now-1)%m+1<m&&f.test(now+1)&&!mark.test(now+1))
		{
			mark.set(q[++r]=now+1);
		}
	}
	int l1=1e9,r1=0,l2=1e9,r2=0;
	for(int i=1;i<=n*m;i++)
	{
		if(!mark.test(i))
		{
			continue;
		}
		l1=min(l1,(i-1)/m+1);
		r1=max(r1,(i-1)/m+1);
		l2=min(l2,(i-1)%m+1);
		r2=max(r2,(i-1)%m+1);
	}
	l1-=(S-1)/m+1,r1-=(S-1)/m+1;
	l2-=(S-1)%m+1,r2-=(S-1)%m+1;
	bitset<1010> f1=mark>>S,f2=mark<<1010-S;
	for(int i=1;i<=n*m;i++)
	{
		int x=(i-1)/m+1,y=(i-1)%m+1;
		if(i!=S&&f.test(i)&&x+l1>=1&&x+r1<=n&&y+l2>=1&&y+l2<=m
		&&(f1&(f>>i))==f1&&(f2&(f<<1010-i))==f2)
		{
			return 0;
		}
	}
	return 1;
}
int main()
{
	ios::sync_with_stdio(false);
	cin.tie(0);
	cin>>T;
	while(T--)
	{
		cin>>n>>m;
		f.reset();
		for(int i=1;i<=n*m;i++)
		{
			char ch;
			cin>>ch;
			if(ch=='.')
			{
				f.set(i);
			}
		}
		int ans=0;
		for(int i=1;i<=n*m;i++)
		{
			if(f.test(i))
			{
				ans+=bfs(i);
			}
		}
		cout<<ans<<endl;
	}
	return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 0ms
memory: 3612kb

input:

4
2 5
.OO..
O..O.
1 3
O.O
1 3
.O.
2 3
OOO
OOO

output:

3
1
0
0

result:

ok 4 lines

Test #2:

score: -100
Wrong Answer
time: 1ms
memory: 3668kb

input:

200
2 4
OOO.
OO..
2 3
OOO
.O.
3 3
O.O
OOO
OO.
4 1
.
.
O
O
1 2
.O
1 1
.
2 5
.OO..
.O.O.
2 1
O
O
1 1
O
1 3
.OO
5 1
O
O
.
O
.
5 2
O.
..
O.
.O
..
5 3
...
...
.OO
..O
OOO
3 5
..O.O
.O.O.
.OO.O
5 2
.O
OO
O.
O.
..
2 1
O
O
3 5
.O.OO
O...O
..OO.
1 5
.....
5 1
O
.
O
.
.
5 3
OOO
OO.
.OO
OO.
O.O
2 1
O
.
5 2
O.
...

output:

3
0
0
2
1
1
3
0
0
1
0
5
9
4
4
0
6
5
2
0
1
6
4
5
2
0
0
5
3
3
1
4
1
0
7
5
2
3
7
3
0
6
2
1
2
0
4
6
6
3
3
2
3
5
2
1
0
3
3
4
4
2
2
0
7
6
4
8
5
3
2
5
2
1
2
1
4
0
0
2
5
1
4
6
6
1
6
2
2
3
4
5
2
1
0
1
9
3
4
11
0
3
2
1
0
0
4
3
1
4
3
8
3
0
3
6
2
4
1
3
3
4
0
2
11
2
2
4
0
4
3
4
2
1
2
3
0
5
0
16
4
3
2
6
0
8
3
3
1...

result:

wrong answer 12th lines differ - expected: '7', found: '5'