QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#101655 | #6380. LaLa and Divination Magic | willow# | RE | 8ms | 13256kb | C++14 | 2.3kb | 2023-04-30 17:11:14 | 2023-04-30 17:11:16 |
Judging History
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...