QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#101558 | #6377. LaLa and Magic Stone | zhoukangyang# | WA | 7ms | 5688kb | C++17 | 2.5kb | 2023-04-30 10:55:57 | 2023-04-30 10:56:53 |
Judging History
answer
#include<bits/stdc++.h>
#define L(i, j, k) for(int i = (j); i <= (k); ++i)
#define R(i, j, k) for(int i = (j); i >= (k); --i)
#define ll long long
#define vi vector <int>
#define sz(a) ((int) (a).size())
#define me(f, x) memset(f, x, sizeof(f))
#define uint unsigned int
#define ull unsigned long long
#define bs bitset < N >
using namespace std;
const int N = 2007, mod = 998244353;
int n, m;
char s[N][N];
int gen[N], tp;
inline bool canput(int x, int y) {
if(s[x][y] == '1' || s[x][y + 2] == '1' || s[x + 2][y] == '1' || s[x + 2][y + 2] == '1')
return 0;
if((s[x + 1][y] - '0') + (s[x][y + 1] - '0') +
(s[x + 1][y + 2] - '0') + (s[x + 2][y + 1] - '0') > 1) return 0;
return 1;
}
vector < pair < int, int > > rt[N];
int main() {
ios :: sync_with_stdio(false);
cin.tie(0); cout.tie(0);
cin >> n >> m;
L(i, 1, n) {
cin >> (s[i] + 1);
}
auto put = [&] (int x, int y) {
if(x < 1 || x > n || y < 1 || y > m || s[x][y] == '1') {
cout << "0" << endl;
exit(0);
}
s[x][y] = '1';
return ;
};
int ans = 1;
L(sum, 2, n + m) {
for(auto u : rt[sum]) {
int x1 = u.first, y1 = sum - x1;
int x2 = u.second, y2 = sum - x1;
if(canput(x1, y1)) {
s[x2][y2] = 1;
} else {
s[x1][y1] = 1;
}
}
tp = 0;
L(i, 1, n) {
int j = sum - i;
if(1 <= j && j <= m && s[i][j] == '0') {
gen[++tp] = i;
put(i, j);
put(i, j + 2);
put(i + 2, j + 2);
put(i + 2, j);
}
}
L(i, 1, tp) {
int x = gen[i];
int y = sum - gen[i];
if(gen[i] + 1 == gen[i + 1]) {
put(x, y + 1);
put(x + 1, y);
put(x + 1, y + 2);
put(x + 2, y - 1);
put(x + 2, y + 1);
put(x + 3, y);
ans = (ll) ans * 2 % mod;
++i;
} else {
vector < pair < int, int > > VC;
VC.emplace_back(x, y + 1);
VC.emplace_back(x + 1, y);
VC.emplace_back(x + 1, y + 2);
VC.emplace_back(x + 2, y + 1);
int ok = 0;
L(p, 0, 3) {
if(s[VC[p].first][VC[p].second] == '1') {
ok = 1;
L(i, 0, 3)
if(i != p)
put(VC[i].first, VC[i].second);
break;
}
}
if(ok) continue;
put(x + 1, y);
put(x, y + 1);
if(s[x + 1][y + 1] == '0') {
put(x + 1, y + 1);
put(x + 2, y + 1);
put(x + 1, y + 2);
put(x + 1, y + 3);
put(x + 2, y + 3);
put(x + 3, y + 1);
put(x + 3, y + 2);
put(x + 3, y + 3);
ans = (ll) ans * 2 % mod;
} else {
rt[sum + 3].emplace_back(x + 1, x + 2);
}
}
}
}
cout << ans << '\n';
return 0;
}
詳細信息
Test #1:
score: 100
Accepted
time: 2ms
memory: 3448kb
input:
4 4 0001 0000 0000 1000
output:
2
result:
ok 1 number(s): "2"
Test #2:
score: 0
Accepted
time: 0ms
memory: 3408kb
input:
5 4 0001 0101 0000 1010 1000
output:
1
result:
ok 1 number(s): "1"
Test #3:
score: 0
Accepted
time: 2ms
memory: 3496kb
input:
3 3 111 111 111
output:
1
result:
ok 1 number(s): "1"
Test #4:
score: 0
Accepted
time: 0ms
memory: 3408kb
input:
3 4 1111 1111 1111
output:
1
result:
ok 1 number(s): "1"
Test #5:
score: 0
Accepted
time: 0ms
memory: 3500kb
input:
3 1000 11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111...
output:
1
result:
ok 1 number(s): "1"
Test #6:
score: 0
Accepted
time: 1ms
memory: 3508kb
input:
4 3 111 111 111 111
output:
1
result:
ok 1 number(s): "1"
Test #7:
score: 0
Accepted
time: 2ms
memory: 3364kb
input:
4 4 1111 1111 1111 1111
output:
1
result:
ok 1 number(s): "1"
Test #8:
score: 0
Accepted
time: 0ms
memory: 3516kb
input:
4 1000 11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111...
output:
1
result:
ok 1 number(s): "1"
Test #9:
score: 0
Accepted
time: 3ms
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: 0ms
memory: 5408kb
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: 5428kb
input:
1000 1000 11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111...
output:
1
result:
ok 1 number(s): "1"
Test #12:
score: 0
Accepted
time: 2ms
memory: 3412kb
input:
3 3 000 010 010
output:
1
result:
ok 1 number(s): "1"
Test #13:
score: 0
Accepted
time: 2ms
memory: 3464kb
input:
3 3 000 011 000
output:
1
result:
ok 1 number(s): "1"
Test #14:
score: 0
Accepted
time: 1ms
memory: 3416kb
input:
3 3 010 010 000
output:
1
result:
ok 1 number(s): "1"
Test #15:
score: 0
Accepted
time: 2ms
memory: 3416kb
input:
3 3 000 110 000
output:
1
result:
ok 1 number(s): "1"
Test #16:
score: 0
Accepted
time: 2ms
memory: 3416kb
input:
4 4 1000 0000 0000 0001
output:
2
result:
ok 1 number(s): "2"
Test #17:
score: 0
Accepted
time: 2ms
memory: 3400kb
input:
4 4 0001 0000 0000 1000
output:
2
result:
ok 1 number(s): "2"
Test #18:
score: 0
Accepted
time: 2ms
memory: 3484kb
input:
3 3 010 101 101
output:
0
result:
ok 1 number(s): "0"
Test #19:
score: 0
Accepted
time: 2ms
memory: 3404kb
input:
3 4 1011 0100 1111
output:
0
result:
ok 1 number(s): "0"
Test #20:
score: 0
Accepted
time: 2ms
memory: 3412kb
input:
3 1000 10011010111111111111000101011100101000000011110011011000110000100110110110111110000111011001010010011100001111111011111111110010110100011101011100100100001110010011111011111101001110011010010110110011001100101010001101100111101001001001101000101011101000100100001111100000010010111101101001000...
output:
0
result:
ok 1 number(s): "0"
Test #21:
score: 0
Accepted
time: 2ms
memory: 3448kb
input:
4 3 010 101 110 000
output:
0
result:
ok 1 number(s): "0"
Test #22:
score: 0
Accepted
time: 2ms
memory: 3528kb
input:
4 4 0110 1010 1101 1110
output:
0
result:
ok 1 number(s): "0"
Test #23:
score: 0
Accepted
time: 2ms
memory: 3412kb
input:
4 1000 01001110100001111110010111111001110111001110100100101101001110110111001111101100111110001110100000010101110001100001011000100111001111101110100001010101100011101110000010110101101100001000111101111000110100110000110111111101111101000011100001001110011000110110001110110011010111101101101001000...
output:
0
result:
ok 1 number(s): "0"
Test #24:
score: 0
Accepted
time: 3ms
memory: 5376kb
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: 5460kb
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: 7ms
memory: 5460kb
input:
1000 1000 00111010100111001111101110110011111101010111001010011001011000100100110011000111000000100010011101100011001001101110100001000101111100100110101010101011000111010101000110000110001100110011111000011100100001001110110000110010000111010110100001010100100101000011110001010111011011101111001011...
output:
0
result:
ok 1 number(s): "0"
Test #27:
score: 0
Accepted
time: 2ms
memory: 3572kb
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: 2ms
memory: 3528kb
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: 0ms
memory: 3528kb
input:
9 78 000111111111111111000111111111100011100010000001111111111111111111111111110001 010100011111111111000011111111100001000000000000111111110001111000110001110000 110100001111110001000011100011100001000000000000010111110000110000100001110000 1000000011111100001000111000011100010001000110000100001100...
output:
0
result:
ok 1 number(s): "0"
Test #30:
score: 0
Accepted
time: 1ms
memory: 3528kb
input:
18 55 1111110001111111111111000111111111111111111000111111111 1111110000100010001000000011100011000111110000111111111 1110000000111010000010000011100001000000010000111111111 1100001000100010000010100011100001000000000001100011111 1100001110001111000111111111110001100000001111100000101 11000111100001...
output:
0
result:
ok 1 number(s): "0"
Test #31:
score: 0
Accepted
time: 2ms
memory: 3640kb
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: 0ms
memory: 3628kb
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: -100
Wrong Answer
time: 0ms
memory: 3532kb
input:
25 19 1111111111111111111 0001111111111000111 1101111111111110111 0001110001111000111 1111100001111100011 1111100000001100001 1111100010101100001 1111111110101110001 0001111111111111000 1101100011111110000 0001000011000110000 1111000010000110001 1000000110000000111 0000111110001000011 00001111111110...
output:
0
result:
wrong answer 1st numbers differ - expected: '8192', found: '0'