QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#101631#6377. LaLa and Magic Stonewillow#WA 8ms7424kbC++142.7kb2023-04-30 15:43:362023-04-30 15:43:37

Judging History

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

  • [2023-08-10 23:21:45]
  • System Update: QOJ starts to keep a history of the judgings of all the submissions.
  • [2023-04-30 15:43:37]
  • 评测
  • 测评结果:WA
  • 用时:8ms
  • 内存:7424kb
  • [2023-04-30 15:43:36]
  • 提交

answer

#include<bits/stdc++.h>
using namespace std;
const int maxn = 2005, mod = 998244353;
const int step[4][7][2] =  {{{0, 0}, {0, 1}, {0, 2}, {1, 0}, {1, 2}, {2, 0}, {2, 2}}, 
							{{0, 0}, {2, 1}, {0, 2}, {1, 0}, {1, 2}, {2, 0}, {2, 2}}, 
							{{0, 0}, {0, 1}, {0, 2}, {2, 1}, {1, 2}, {2, 0}, {2, 2}}, 
							{{0, 0}, {0, 1}, {0, 2}, {1, 0}, {2, 1}, {2, 0}, {2, 2}}};
int Add(int x, int y) {
	return (x += y) >= mod ? x - mod : x;
}
int Mul(int x, int y) {
	return 1ll * x * y % mod;
}
int n, m;
char s[maxn][maxn];
void Put(int x, int y, int k, char c) {
	for(int i = 0; i < 7; ++ i) {
		int nx = x + step[k][i][0], ny = y + step[k][i][1];
		s[nx][ny] = c;
	}
}
int Solve(int x, int y, int ans) {
// cerr << x << " " << y << " " << ans << " " << s[x][y] << endl;
// for(int i = 1; i <= n; ++ i, cerr << endl)
// 	for(int j = 1; j <= m; ++ j)
// 		cerr << s[i][j];
	if(!ans)
		return 0;
	if(x == n + 1)
		return ans;
	if(s[x][y] == '1')
		return Solve(x + (y == m), y == m ? 1 : y + 1, ans);
	if(x >= n - 1 || y >= n - 1)
		return 0;
	int res = 0;
	if(s[x + 1][y + 1] == '0') {
		int f = 1;
		for(int i = 0; i < 3 && f; ++ i)
			for(int j = 0; j < 3 && f; ++ j)
				if(s[x + i][y + j] == '1')
					f = 0;
		if(!f)
			return 0;

		if(y > 1 && x + 3 <= n && s[x + 1][y - 1] == '0' && s[x + 2][y - 1] == '0' && s[x + 3][y - 1] == '0' && s[x + 3][y] == '0' && s[x + 3][y + 1] == '0') {
			Put(x, y, 2, '1');
			Put(x + 1, y - 1, 3, '1');
			res += Solve(x + (y == m), y == m ? 1 : y + 1, Add(ans, ans));
			Put(x, y, 2, '1');
			Put(x + 1, y - 1, 3, '1');
		}
		if(y + 3 <= m && x + 3 <= n && s[x + 1][y + 3] == '0' && s[x + 2][y + 3] == '0' && s[x + 3][y + 3] == '0' && s[x + 3][y + 2] == '0' && s[x + 3][y + 1] == '0') {
			Put(x, y, 3, '1');
			Put(x + 1, y + 1, 2, '1');
			res += Solve(x + (y == m), y == m ? 1 : y + 1, Add(ans, ans));
			Put(x, y, 3, '1');
			Put(x + 1, y + 1, 2, '1');
		}
		return res;
	}
	else {
		int k = -1;
		if(s[x][y + 1] == '1') {
			if(k == -1)
				k = 1;
			else
				k = -2;
		}
		if(s[x + 2][y + 1] == '1') {
			if(k == -1)
				k = 0;
			else
				k = -2;
		}
		if(s[x + 1][y] == '1') {
			if(k == -1)
				k = 2;
			else
				k = -2;
		}
		if(s[x + 1][y + 2] == '1') {
			if(k == -1)
				k = 3;
			else
				k = -2;
		}
		if(k == -2)
			return 0;
		if(k != -1) {
			Put(x, y, k, '1');
			res += Solve(x + (y == m), y == m ? 1 : y + 1, ans);
			Put(x, y, k, '0');
		}
		else {
			for(k = 0; k < 4; ++ k) {
				Put(x, y, k, '1');
				res += Solve(x + (y == m), y == m ? 1 : y + 1, ans);
				Put(x, y, k, '0');
			}
		}
		return res;
	}
	return res;
}
int main() {
	scanf("%d%d", &n, &m);
	for(int i = 1; i <= n; ++ i)
		scanf("%s", s[i] + 1);
	printf("%d\n", Solve(1, 1, 1));
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 2ms
memory: 3616kb

input:

4 4
0001
0000
0000
1000

output:

2

result:

ok 1 number(s): "2"

Test #2:

score: 0
Accepted
time: 2ms
memory: 3648kb

input:

5 4
0001
0101
0000
1010
1000

output:

1

result:

ok 1 number(s): "1"

Test #3:

score: 0
Accepted
time: 2ms
memory: 3648kb

input:

3 3
111
111
111

output:

1

result:

ok 1 number(s): "1"

Test #4:

score: 0
Accepted
time: 2ms
memory: 3492kb

input:

3 4
1111
1111
1111

output:

1

result:

ok 1 number(s): "1"

Test #5:

score: 0
Accepted
time: 2ms
memory: 3600kb

input:

3 1000
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111...

output:

1

result:

ok 1 number(s): "1"

Test #6:

score: 0
Accepted
time: 3ms
memory: 3556kb

input:

4 3
111
111
111
111

output:

1

result:

ok 1 number(s): "1"

Test #7:

score: 0
Accepted
time: 1ms
memory: 3564kb

input:

4 4
1111
1111
1111
1111

output:

1

result:

ok 1 number(s): "1"

Test #8:

score: 0
Accepted
time: 2ms
memory: 3644kb

input:

4 1000
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111...

output:

1

result:

ok 1 number(s): "1"

Test #9:

score: 0
Accepted
time: 2ms
memory: 5688kb

input:

1000 3
111
111
111
111
111
111
111
111
111
111
111
111
111
111
111
111
111
111
111
111
111
111
111
111
111
111
111
111
111
111
111
111
111
111
111
111
111
111
111
111
111
111
111
111
111
111
111
111
111
111
111
111
111
111
111
111
111
111
111
111
111
111
111
111
111
111
111
111
111
111
111
111
111
1...

output:

1

result:

ok 1 number(s): "1"

Test #10:

score: 0
Accepted
time: 4ms
memory: 7424kb

input:

1000 4
1111
1111
1111
1111
1111
1111
1111
1111
1111
1111
1111
1111
1111
1111
1111
1111
1111
1111
1111
1111
1111
1111
1111
1111
1111
1111
1111
1111
1111
1111
1111
1111
1111
1111
1111
1111
1111
1111
1111
1111
1111
1111
1111
1111
1111
1111
1111
1111
1111
1111
1111
1111
1111
1111
1111
1111
1111
1111
111...

output:

1

result:

ok 1 number(s): "1"

Test #11:

score: 0
Accepted
time: 4ms
memory: 6484kb

input:

1000 1000
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111...

output:

1

result:

ok 1 number(s): "1"

Test #12:

score: 0
Accepted
time: 0ms
memory: 3564kb

input:

3 3
000
010
010

output:

1

result:

ok 1 number(s): "1"

Test #13:

score: 0
Accepted
time: 3ms
memory: 3604kb

input:

3 3
000
011
000

output:

1

result:

ok 1 number(s): "1"

Test #14:

score: 0
Accepted
time: 1ms
memory: 3640kb

input:

3 3
010
010
000

output:

1

result:

ok 1 number(s): "1"

Test #15:

score: 0
Accepted
time: 2ms
memory: 3788kb

input:

3 3
000
110
000

output:

1

result:

ok 1 number(s): "1"

Test #16:

score: 0
Accepted
time: 2ms
memory: 3564kb

input:

4 4
1000
0000
0000
0001

output:

2

result:

ok 1 number(s): "2"

Test #17:

score: 0
Accepted
time: 0ms
memory: 3492kb

input:

4 4
0001
0000
0000
1000

output:

2

result:

ok 1 number(s): "2"

Test #18:

score: 0
Accepted
time: 2ms
memory: 3644kb

input:

3 3
010
101
101

output:

0

result:

ok 1 number(s): "0"

Test #19:

score: 0
Accepted
time: 2ms
memory: 3596kb

input:

3 4
1011
0100
1111

output:

0

result:

ok 1 number(s): "0"

Test #20:

score: 0
Accepted
time: 1ms
memory: 3568kb

input:

3 1000
10011010111111111111000101011100101000000011110011011000110000100110110110111110000111011001010010011100001111111011111111110010110100011101011100100100001110010011111011111101001110011010010110110011001100101010001101100111101001001001101000101011101000100100001111100000010010111101101001000...

output:

0

result:

ok 1 number(s): "0"

Test #21:

score: 0
Accepted
time: 2ms
memory: 3596kb

input:

4 3
010
101
110
000

output:

0

result:

ok 1 number(s): "0"

Test #22:

score: 0
Accepted
time: 2ms
memory: 3600kb

input:

4 4
0110
1010
1101
1110

output:

0

result:

ok 1 number(s): "0"

Test #23:

score: 0
Accepted
time: 2ms
memory: 3616kb

input:

4 1000
01001110100001111110010111111001110111001110100100101101001110110111001111101100111110001110100000010101110001100001011000100111001111101110100001010101100011101110000010110101101100001000111101111000110100110000110111111101111101000011100001001110011000110110001110110011010111101101101001000...

output:

0

result:

ok 1 number(s): "0"

Test #24:

score: 0
Accepted
time: 0ms
memory: 7316kb

input:

1000 3
011
011
101
011
101
011
100
101
110
010
101
010
010
100
100
000
010
101
011
110
101
110
011
101
100
110
011
011
101
101
111
001
101
100
110
110
101
011
010
100
100
110
110
100
110
101
111
011
101
001
101
101
001
110
110
010
101
110
010
100
010
110
010
110
111
101
100
001
000
001
110
001
111
0...

output:

0

result:

ok 1 number(s): "0"

Test #25:

score: 0
Accepted
time: 3ms
memory: 5512kb

input:

1000 4
1000
0000
1010
0100
0101
0011
1101
0000
1001
0001
1111
0100
1101
0111
1110
1001
0100
0011
0011
1000
1001
1100
0110
0100
1100
0111
0010
0110
1111
1101
1001
0010
1110
1100
1000
0111
0010
0100
1001
0101
1111
0000
0110
0011
0110
1000
0110
1111
0000
0000
1011
1000
0000
0101
1001
0001
0100
0110
011...

output:

0

result:

ok 1 number(s): "0"

Test #26:

score: 0
Accepted
time: 8ms
memory: 6580kb

input:

1000 1000
00111010100111001111101110110011111101010111001010011001011000100100110011000111000000100010011101100011001001101110100001000101111100100110101010101011000111010101000110000110001100110011111000011100100001001110110000110010000111010110100001010100100101000011110001010111011011101111001011...

output:

0

result:

ok 1 number(s): "0"

Test #27:

score: 0
Accepted
time: 2ms
memory: 3752kb

input:

58 17
10001101010001111
10111101010000111
10001100010000000
00011000111000010
01110000111111010
00010000111111111
11110001111110001
11100010001100001
11100000000100001
11100000000100011
11110001000111000
00010001000110000
00000101000010000
00000101000010001
10001111100011111
11111111000111000
111000...

output:

0

result:

ok 1 number(s): "0"

Test #28:

score: 0
Accepted
time: 1ms
memory: 3588kb

input:

16 13
1111111111111
1111111111111
1000110001111
1000100000001
1000000000000
1100000010000
1111111111000
1111111111111
1110001111111
1110000111000
1110000110000
1111000110000
1100010000001
1000010000111
1000010000111
1000111000111

output:

0

result:

ok 1 number(s): "0"

Test #29:

score: 0
Accepted
time: 1ms
memory: 3808kb

input:

9 78
000111111111111111000111111111100011100010000001111111111111111111111111110001
010100011111111111000011111111100001000000000000111111110001111000110001110000
110100001111110001000011100011100001000000000000010111110000110000100001110000
1000000011111100001000111000011100010001000110000100001100...

output:

0

result:

ok 1 number(s): "0"

Test #30:

score: 0
Accepted
time: 0ms
memory: 3524kb

input:

18 55
1111110001111111111111000111111111111111111000111111111
1111110000100010001000000011100011000111110000111111111
1110000000111010000010000011100001000000010000111111111
1100001000100010000010100011100001000000000001100011111
1100001110001111000111111111110001100000001111100000101
11000111100001...

output:

0

result:

ok 1 number(s): "0"

Test #31:

score: 0
Accepted
time: 0ms
memory: 5780kb

input:

124 5
10001
10000
10000
11000
00011
00001
00001
10001
00011
00001
00001
10001
11111
00011
01011
01011
11111
11111
10001
00001
00001
00011
10001
00001
00001
00011
00011
01011
01011
11111
11111
11111
11000
10000
10000
10001
11111
11111
11111
11111
11000
10000
10000
10001
10001
10000
10000
11000
11000
...

output:

1048576

result:

ok 1 number(s): "1048576"

Test #32:

score: 0
Accepted
time: 2ms
memory: 3776kb

input:

117 6
110001
111101
110001
111000
110000
110000
110001
111111
100011
100001
100001
110001
111111
111111
111111
111000
110000
110000
110001
100011
000011
000011
000111
000111
000011
000011
100011
000111
000011
000011
100011
111111
000101
010111
010000
110000
110000
110001
111111
111111
111111
111111
...

output:

0

result:

ok 1 number(s): "0"

Test #33:

score: 0
Accepted
time: 2ms
memory: 5560kb

input:

25 19
1111111111111111111
0001111111111000111
1101111111111110111
0001110001111000111
1111100001111100011
1111100000001100001
1111100010101100001
1111111110101110001
0001111111111111000
1101100011111110000
0001000011000110000
1111000010000110001
1000000110000000111
0000111110001000011
00001111111110...

output:

8192

result:

ok 1 number(s): "8192"

Test #34:

score: 0
Accepted
time: 2ms
memory: 3900kb

input:

83 5
00011
00001
00001
10001
11111
10001
10000
10000
11000
00011
00001
00001
10001
00011
01111
00011
10001
00001
00001
00011
10001
10101
10101
11111
11111
10001
00001
00001
00011
10001
00001
00001
00011
11111
10001
00001
00001
00011
11111
10001
10000
10000
11000
00011
00001
00001
10001
11111
11111
1...

output:

32768

result:

ok 1 number(s): "32768"

Test #35:

score: 0
Accepted
time: 2ms
memory: 3856kb

input:

30 28
1111111111111111111110001111
1111000111111111000111101000
1110000000111110000110000000
1110000000010000000000110000
1110001000000000000000110001
1000111100000001110000000111
1010111111100011110001000011
1010111111111111111111000011
0001111111110001111111100011
0000110001100001000100011111
0000...

output:

33554432

result:

ok 1 number(s): "33554432"

Test #36:

score: 0
Accepted
time: 2ms
memory: 3672kb

input:

64 8
11111111
11111111
00011111
00001111
00001000
10000000
11110000
11110001
11111111
11100011
11000011
11000011
11000111
11111111
11000111
11000011
11000011
11100011
11111111
11100011
11000011
11000011
11000111
11111111
11100011
11100001
00000001
00000001
00001111
10001111
11100011
11000011
1100001...

output:

0

result:

ok 1 number(s): "0"

Test #37:

score: 0
Accepted
time: 0ms
memory: 3788kb

input:

5 141
111111000111111111000111111111111111111011111000111111111111111110100001111100011100010001110001100011100011110001100010001100010001111000111
100010000100011110000110001000111100001010001000000000011111110000100000000100001000010101100001100001100001100001100000000100000000110000111
1000000000...

output:

0

result:

ok 1 number(s): "0"

Test #38:

score: 0
Accepted
time: 3ms
memory: 3796kb

input:

10 73
1111111111111111100011111111111111111110001111111000011111111111101000011
1111100010001111000011111110001110001110000110001000011111000111101000001
1111000010111111000011111110000100001110000100001000000011000011100000001
111100001000111100011111000000010000111100010000100010000100000001111000...

output:

0

result:

ok 1 number(s): "0"

Test #39:

score: -100
Wrong Answer
time: 0ms
memory: 3604kb

input:

27 29
11000111111100011111111111111
11000011111000011100011111111
11000000011000011100001110001
11100001011000111100001110101
11111101011000111110001110101
11111111111000011111111110001
11100011111000011100011100001
11100001101000011100001100001
11100001101010001100001100011
111100011000000011100011...

output:

0

result:

wrong answer 1st numbers differ - expected: '67108864', found: '0'