QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#101655#6380. LaLa and Divination Magicwillow#RE 8ms13256kbC++142.3kb2023-04-30 17:11:142023-04-30 17:11:16

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 17:11:16]
  • 评测
  • 测评结果:RE
  • 用时:8ms
  • 内存:13256kb
  • [2023-04-30 17:11:14]
  • 提交

answer

#include<bits/stdc++.h>
using namespace std;
const int maxn = 2005;
char s[maxn][maxn];
int n, m, cnt;
bitset<maxn>w[maxn][2], f[2][2][maxn];
vector<pair<pair<int, int>, int> > ans;
bitset<4000>to[maxn], h, pre;
void Solve(int now, bitset<4000> cur) {
	bitset<4000> w = cur & h, x = cur & (h << 1);
	// for(int i = 0; i < 2 * m; ++ i)
	// 	cerr << w[i];
	// cerr << endl;
	// for(int i = 0; i < 2 * m; ++ i)
	// 	cerr << x[i];
	// cerr << endl;
	x |= (w << 1);
	// for(int i = 0; i < 2 * m; ++ i)
	// 	cerr << x[i];
	// cerr << endl;
	if(x.count() != m)
		return;
	// cerr << "S" << now << endl;
	// for(int i = 0; i < 2 * m; ++ i)
	// 	cerr << cur[i];
	// cerr << endl;
	if(now >= m) {
		++ cnt;
		if(cnt > n)
			exit(0 * puts("-1"));
		return;
	}
	// cerr << cur[now * 2] << " " << cur[now * 2 + 1] << endl;
	// for(int i = 0; i < 2 * m; ++ i)
	// 	cerr << to[now * 2][i];
	// cerr << endl;
	// for(int i = 0; i < 2 * m; ++ i)
	// 	cerr << to[now * 2 + 1][i];
	// cerr << endl;
	// cerr << "? " << endl;
	if(cur[now * 2])
		Solve(now + 1, cur & to[now * 2]);
	if(cur[now * 2 + 1])
		Solve(now + 1, cur & to[now * 2 + 1]);
}
int main() {
	scanf("%d%d", &n, &m);
	for(int i = 0; i < n; ++ i) {
		scanf("%s", s[i]);
		for(int j = 0; j < m; ++ j) {
			w[i][s[i][j] - '0'][j] = 1;
		}
		for(int j = 0; j < m; ++ j) {
			if(s[i][j] - '0') {
				f[1][0][j] |= w[i][0];
				f[1][1][j] |= w[i][1];
			}
			else {
				f[0][0][j] |= w[i][0];
				f[0][1][j] |= w[i][1];
			}
		}
	}
	for(int i = 0; i < 2 * m; ++ i)
		to[i].set();
	for(int a = 0; a < 2; ++ a)
		for(int b = 0; b < 2; ++ b)
			for(int i = 0; i < m; ++ i)
				for(int j = i; j < m; ++ j) {
					if(i == j && a != b)
						continue;
					if(f[a ^ 1][b ^ 1][i][j])
						continue;
					// i canbe a or j canbe b
					// cerr << i << " " << j << " " << a << " " << b << endl;
					to[i * 2 + (a ^ 1)][j * 2 + (b ^ 1)] = 0;
					to[j * 2 + (b ^ 1)][i * 2 + (a ^ 1)] = 0;
					ans.push_back({{i, j}, a + b * 2 + 1});
				}
	for(int i = 0; i < m; ++ i)
		to[i * 2][i * 2 + 1] = to[i * 2 + 1][i * 2] = 0, h[i * 2] = 1;
	for(int i = 0; i < 2 * m; ++ i)
		pre[i] = 1;
	Solve(0, pre);
	printf("%d\n", (int)ans.size());
	for(auto w : ans)
		printf("%d %d %d\n", w.first.first, w.first.second, w.second);
}

详细

Test #1:

score: 100
Accepted
time: 3ms
memory: 7676kb

input:

2 1
1
0

output:

0

result:

ok Kout = 0, Kans = 0

Test #2:

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

input:

3 3
101
011
111

output:

6
0 2 3
1 2 3
0 1 4
0 2 4
1 2 4
2 2 4

result:

ok Kout = 6, Kans = 6

Test #3:

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

input:

2 1
0
1

output:

0

result:

ok Kout = 0, Kans = 0

Test #4:

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

input:

2 1
0
1

output:

0

result:

ok Kout = 0, Kans = 0

Test #5:

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

input:

2 1
1
0

output:

0

result:

ok Kout = 0, Kans = 0

Test #6:

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

input:

2 1
0
1

output:

0

result:

ok Kout = 0, Kans = 0

Test #7:

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

input:

2 1
0
1

output:

0

result:

ok Kout = 0, Kans = 0

Test #8:

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

input:

2 1
1
0

output:

0

result:

ok Kout = 0, Kans = 0

Test #9:

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

input:

1 1
1

output:

1
0 0 4

result:

ok Kout = 1, Kans = 1

Test #10:

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

input:

1 1
0

output:

1
0 0 1

result:

ok Kout = 1, Kans = 1

Test #11:

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

input:

2 1
1
0

output:

0

result:

ok Kout = 0, Kans = 0

Test #12:

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

input:

2 1
1
0

output:

0

result:

ok Kout = 0, Kans = 0

Test #13:

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

input:

2 4
0111
0010

output:

15
0 0 1
0 1 1
0 2 1
0 3 1
0 1 3
0 2 3
0 3 3
1 2 3
1 3 3
1 3 2
2 3 2
0 2 4
1 2 4
2 2 4
2 3 4

result:

ok Kout = 15, Kans = 15

Test #14:

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

input:

2 1
1
0

output:

0

result:

ok Kout = 0, Kans = 0

Test #15:

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

input:

4 2
10
11
01
00

output:

0

result:

ok Kout = 0, Kans = 0

Test #16:

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

input:

2 1
1
0

output:

0

result:

ok Kout = 0, Kans = 0

Test #17:

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

input:

2 4
0010
1000

output:

15
0 1 1
0 2 1
0 3 1
1 1 1
1 2 1
1 3 1
2 3 1
3 3 1
1 2 3
1 3 3
0 1 2
0 3 2
1 3 2
2 3 2
0 2 4

result:

ok Kout = 15, Kans = 15

Test #18:

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

input:

2 5
11101
00000

output:

21
0 3 1
1 3 1
2 3 1
3 3 1
3 4 1
0 1 3
0 2 3
0 4 3
1 2 3
1 4 3
2 4 3
3 4 3
0 1 2
0 2 2
0 3 2
0 4 2
1 2 2
1 3 2
1 4 2
2 3 2
2 4 2

result:

ok Kout = 21, Kans = 21

Test #19:

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

input:

5 4
0010
1001
0011
0101
1011

output:

-1

result:

ok Kout = -1, Kans = -1

Test #20:

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

input:

3 2
01
00
10

output:

1
0 1 1

result:

ok Kout = 1, Kans = 1

Test #21:

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

input:

3 2
10
11
00

output:

1
0 1 2

result:

ok Kout = 1, Kans = 1

Test #22:

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

input:

2 1
0
1

output:

0

result:

ok Kout = 0, Kans = 0

Test #23:

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

input:

3 27
111010110011101010011110110
010001110100000110100101101
000011111000000010011111001

output:

-1

result:

ok Kout = -1, Kans = -1

Test #24:

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

input:

3 7
1000100
0001100
0101111

output:

39
0 1 1
0 2 1
0 3 1
0 5 1
0 6 1
1 2 1
2 2 1
2 3 1
2 4 1
2 5 1
2 6 1
0 4 3
1 3 3
1 4 3
1 5 3
1 6 3
2 3 3
2 4 3
2 5 3
2 6 3
3 4 3
5 6 3
0 2 2
1 2 2
1 5 2
1 6 2
3 5 2
3 6 2
4 5 2
4 6 2
5 6 2
0 3 4
0 4 4
1 4 4
2 4 4
3 4 4
4 4 4
4 5 4
4 6 4

result:

ok Kout = 39, Kans = 39

Test #25:

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

input:

1 19
1010110011001101000

output:

532
0 1 1
0 3 1
0 6 1
0 7 1
0 10 1
0 11 1
0 14 1
0 16 1
0 17 1
0 18 1
1 1 1
1 2 1
1 3 1
1 4 1
1 5 1
1 6 1
1 7 1
1 8 1
1 9 1
1 10 1
1 11 1
1 12 1
1 13 1
1 14 1
1 15 1
1 16 1
1 17 1
1 18 1
2 3 1
2 6 1
2 7 1
2 10 1
2 11 1
2 14 1
2 16 1
2 17 1
2 18 1
3 3 1
3 4 1
3 5 1
3 6 1
3 7 1
3 8 1
3 9 1
3 10 1
3 11...

result:

ok Kout = 532, Kans = 532

Test #26:

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

input:

5 32
10101101001001001101111100100110
00110110010111010101011000011010
01010101110100000110001000010100
11010011000110101101110001011111
00111001110011110000000010000111

output:

-1

result:

ok Kout = -1, Kans = -1

Test #27:

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

input:

3 12
110010101000
110001011000
110101011001

output:

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

result:

ok Kout = 145, Kans = 145

Test #28:

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

input:

3 25
1110100100011100101100111
0100000001011101101010101
0111110111111001001110111

output:

-1

result:

ok Kout = -1, Kans = -1

Test #29:

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

input:

1 5
10110

output:

35
0 1 1
0 4 1
1 1 1
1 2 1
1 3 1
1 4 1
2 4 1
3 4 1
4 4 1
0 2 3
0 3 3
1 2 3
1 3 3
1 4 3
2 3 3
0 1 2
0 2 2
0 3 2
0 4 2
1 4 2
2 3 2
2 4 2
3 4 2
0 0 4
0 1 4
0 2 4
0 3 4
0 4 4
1 2 4
1 3 4
2 2 4
2 3 4
2 4 4
3 3 4
3 4 4

result:

ok Kout = 35, Kans = 35

Test #30:

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

input:

5 17
01011100010100110
01001101111011001
00100111001101010
10101000001010110
00101011010010001

output:

-1

result:

ok Kout = -1, Kans = -1

Test #31:

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

input:

3 30
010100010011100011010001010100
011111100101001100010101010010
011000010111111111000101101110

output:

-1

result:

ok Kout = -1, Kans = -1

Test #32:

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

input:

5 30
110010101001001100010110010000
011011111000011001101000100000
110101010111000000100100111000
001111011110101101101001101011
101100001101011110101010110000

output:

-1

result:

ok Kout = -1, Kans = -1

Test #33:

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

input:

10 10
0110101111
1100100000
1000101100
1000010101
1001011101
1011101101
1011111011
0101010000
0111011010
1111010110

output:

-1

result:

ok Kout = -1, Kans = -1

Test #34:

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

input:

9 10
1000001101
0110010110
1011101111
1010001110
1110001000
1001110110
1101010010
0001011111
1000010100

output:

-1

result:

ok Kout = -1, Kans = -1

Test #35:

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

input:

3 5
11111
01000
01100

output:

18
0 1 3
0 2 3
0 3 3
0 4 3
3 4 3
0 3 2
0 4 2
1 2 2
1 3 2
1 4 2
2 3 2
2 4 2
3 4 2
0 1 4
1 1 4
1 2 4
1 3 4
1 4 4

result:

ok Kout = 18, Kans = 18

Test #36:

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

input:

7 9
000010100
101001100
110010111
000000110
100010101
101000100
101101100

output:

-1

result:

ok Kout = -1, Kans = -1

Test #37:

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

input:

1 4
0000

output:

22
0 0 1
0 1 1
0 2 1
0 3 1
1 1 1
1 2 1
1 3 1
2 2 1
2 3 1
3 3 1
0 1 3
0 2 3
0 3 3
1 2 3
1 3 3
2 3 3
0 1 2
0 2 2
0 3 2
1 2 2
1 3 2
2 3 2

result:

ok Kout = 22, Kans = 22

Test #38:

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

input:

9 8
10011110
10111101
11001010
01000101
10110011
00101001
00101100
11010110
01000000

output:

-1

result:

ok Kout = -1, Kans = -1

Test #39:

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

input:

3 10
0000000111
1011011111
0101111010

output:

-1

result:

ok Kout = -1, Kans = -1

Test #40:

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

input:

2 1
1
0

output:

0

result:

ok Kout = 0, Kans = 0

Test #41:

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

input:

1 5
00110

output:

35
0 0 1
0 1 1
0 2 1
0 3 1
0 4 1
1 1 1
1 2 1
1 3 1
1 4 1
2 4 1
3 4 1
4 4 1
0 1 3
0 2 3
0 3 3
0 4 3
1 2 3
1 3 3
1 4 3
2 3 3
0 1 2
0 4 2
1 4 2
2 3 2
2 4 2
3 4 2
0 2 4
0 3 4
1 2 4
1 3 4
2 2 4
2 3 4
2 4 4
3 3 4
3 4 4

result:

ok Kout = 35, Kans = 35

Test #42:

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

input:

6 9
100101111
100001110
100101010
001101000
101100010
010101110

output:

-1

result:

ok Kout = -1, Kans = -1

Test #43:

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

input:

6 836
001111110001001001101010101010011100010100100100111110110100101000100100000000011101110001011100111111111001101111111101101110010011000100100111111101011010101101011101010000100011100011000011111011011110000001010101001101110100001111111001000110111000010110001100110010010000101011001010101100...

output:

-1

result:

ok Kout = -1, Kans = -1

Test #44:

score: -100
Runtime Error

input:

1 1680
00110010011001010101000101001110100010100110000110011101101101011011011011011011000000100100001111110111011001000010100101111110011000011110001000000001001010010110001011101000000110011010000001101010010000101111000010110001001010000010001010110000110111011011001011010011100111110000100110110...

output:


result: