QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#112785 | #5414. Stop, Yesterday Please No More | HHH | AC ✓ | 69ms | 8880kb | C++14 | 3.5kb | 2023-06-13 13:34:01 | 2023-06-13 13:34:03 |
Judging History
answer
#include<bits/stdc++.h>
#define endl '\n'
#define db debug
#define debug(x) cout << #x << " is " << x << endl
using namespace std;
const int MAXN = 1010;
const int MAXL = 1000010;
int t;
int n, m, k;
char s[MAXL];
bool vis[MAXN][MAXN];
struct BITree{
int a[MAXN][MAXN];
inline int lowbit(int x){ return x & -x; }
inline void add(int x, int y, int k){
for (int i = x; i <= n + 5; i += lowbit(i))
for (int j = y; j <= m + 5; j += lowbit(j))
a[i][j] += k;
return;
}
inline int query(int x, int y){
int res = 0;
for (int i = x; i; i -= lowbit(i))
for (int j = y; j; j -= lowbit(j))
res += a[i][j];
return res;
}
inline void add(int x1, int y1, int x2, int y2, int k){
// cout << "ADD: " << x1 << ' ' << y1 << ' ' << x2 << ' ' << y2 << ' ' << k << endl;
add(x1, y1, k);
add(x1, y2 + 1, -k);
add(x2 + 1, y1, -k);
add(x2 + 1, y2 + 1, k);
return;
}
} tr;
int main(){
// freopen(".in", "r", stdin);
// freopen(".out", "w", stdout);
ios:: sync_with_stdio(false);
cin.tie(0), cout.tie(0);
// for (int i = 1; i <= 5; ++i){
// for (int j = 1; j <= 5; ++j) cout << tr.query(i, j, i, j) << ' ';
// cout << endl;
// }
// cout << endl;
// tr.add(1, 1, 5, 5, 1);
// for (int i = 1; i <= 5; ++i){
// for (int j = 1; j <= 5; ++j) cout << tr.query(i, j, i, j) << ' ';
// cout << endl;
// }
// return 0;
cin >> t;
while (t--){
cin >> n >> m >> k;
cin >> s + 1;
int l = strlen(s + 1);
int mxx, mxy, mnx, mny;
mxx = mxy = mnx = mny = 1;
int nowx = 1, nowy = 1;
for (int i = 1; i <= l; ++i){
if (s[i] == 'U') --nowx;
else if (s[i] == 'D') ++nowx;
else if (s[i] == 'L') --nowy;
else ++nowy;
mxx = max(mxx, nowx), mxy = max(mxy, nowy);
mnx = min(mnx, nowx), mny = min(mny, nowy);
}
int x1, y1, x2, y2;
x1 = 2 - mnx;
y1 = 2 - mny;
x2 = n + 1 - mxx;
y2 = m + 1 - mxy;
// debug(x1), debug(y1), db(x2), db(y2);
int lenx = x2 - x1, leny = y2 - y1;
int surv = (lenx + 1) * (leny + 1);
if (lenx < 0 || leny < 0){
if (k == 0) cout << n * m << endl;
else cout << 0 << endl;
continue;
}
int rem = surv - k;
tr.add(x1, y1, x1 + lenx, y1 + leny, 1);
vis[x1][y1] = true;
nowx = x1, nowy = y1;
for (int i = 1; i <= l; ++i){
if (s[i] == 'U') --nowx;
else if (s[i] == 'D') ++nowx;
else if (s[i] == 'L') --nowy;
else ++nowy;
// db(nowx), db(nowy);
if (vis[nowx][nowy]) continue;
vis[nowx][nowy] = true;
tr.add(nowx, nowy, nowx + lenx, nowy + leny, 1);
}
int res = 0;
for (int i = 1; i <= n; ++i)
for (int j = 1; j <= m; ++j){
int r = tr.query(i, j);
if (r == rem) ++res;
// debug(r);
}
for (int i = 1; i <= n; ++i)
for (int j = 1; j <= m; ++j)
if (vis[i][j]){
tr.add(i, j, i + lenx, j + leny, -1);
vis[i][j] = false;
}
cout << res << endl;
}
return 0;
}
/*
3
4 5 3
ULDDRR
*/
詳細信息
Test #1:
score: 100
Accepted
time: 0ms
memory: 5328kb
input:
3 4 5 3 ULDDRR 4 5 0 UUUUUUU 4 5 10 UUUUUUU
output:
2 20 0
result:
ok 3 number(s): "2 20 0"
Test #2:
score: 0
Accepted
time: 5ms
memory: 7784kb
input:
1060 19 12 0 UDLDDUUUUDDDLLRDUDUURULUUUDRDUDRDRLRLRLULULLLDLDDRLUUUURUUUDDRLLRUUUDULURUULLRDRLRDDURDUUURRRLURLRUULRRUDURDLUUURDLURDDLUUURDDRLLURRDLRUDLRDRLLRRDRDDLDRURRRLUDULLLRUUDLRRURRDLLRRRDLLRDDDLRLRURURDDDL 11 1 0 UR 3 18 33 UDRLR 17 11 132 RLDRDLDRUU 6 10 13 UULUDDLRDLUUDLDD 1 15 0 D 6 20 50 D...
output:
228 11 20 99 18 15 34 240 15 0 0 13 14 18 26 16 1 19 108 8 2 2 3 7 0 30 16 21 0 8 10 9 15 5 320 11 7 3 0 0 12 0 11 0 0 14 0 22 36 51 23 7 6 4 2 48 28 8 63 22 49 13 10 4 108 10 18 44 0 15 9 0 4 30 14 99 105 10 14 17 0 66 10 11 28 52 34 56 33 14 56 90 14 0 121 3 48 30 36 13 0 30 7 8 3 11 16 45 20 34 0...
result:
ok 1060 numbers
Test #3:
score: 0
Accepted
time: 22ms
memory: 7440kb
input:
1 1000 1000 979065 DDUULULUDULLULLDLUULURRLDURLRDLRRUURUUUDLRLUUDUUDUDLLDDDULU
output:
958416
result:
ok 1 number(s): "958416"
Test #4:
score: 0
Accepted
time: 22ms
memory: 7712kb
input:
1 1000 1000 943471 LRLDLURLDLRDRDUULULRDDLLRURDUURLLDDLDLDDLLLUUURLDRUDRLLUUUUUDLUUDLURURRDLRLRRRLULRRULURLRRDLDRLUDRRLDDLUDRRLLUDLLLRDULRRRRLDUUDRDLULUUUUDRRDULUDLLUUDLDURDRRLRRLDRLDDRURURLUULRRLDLLRLRDRRUULDLDLULLDLLRULLRUULURDURRLUUDUULLULDLRUDDLRLRLLUDDDLLLUDRRLDDULRRURRDURDDRDLLULRLULURLRDLLURD...
output:
889224
result:
ok 1 number(s): "889224"
Test #5:
score: 0
Accepted
time: 69ms
memory: 8720kb
input:
1 1000 1000 315808 LLRURURRDDDULLDDUDRDLRLLLDDDLUDRDURLDULRLRULUUDLUULUUDULLLLDDURLDUULUUDLLDLLDRUDUULRLLRLRUURLRLULLDDLLDUDLLRUUDRLDLUULDLLDRRRURDULLDRRRDURURDRLDURURUDLURLDURRLRRUDUDURDRLRRRDLRRURLURUDRRLDLRULLDLUURDURLURLLRDLRDRUURURDRUDUUUDLRRLUDLUUDUDDRRDUULUUDDRLLULDUUDRURRDRLULRLULDURLURUDLLD...
output:
426
result:
ok 1 number(s): "426"
Test #6:
score: 0
Accepted
time: 21ms
memory: 7628kb
input:
1 1000 1000 986018 LLULDRRRDDURRUDRUURRRDDLUUDUULRULRDULLD
output:
972180
result:
ok 1 number(s): "972180"
Test #7:
score: 0
Accepted
time: 17ms
memory: 5676kb
input:
1 1000 1000 945431 DDRRURUUDLDULLDLDDLRULDLLDDRRLUDRLUURRLDRDLURUURRRRLRURLURULLLDRDDDRRRLDLDRLRDDUURRURDDDLRUURLUURLRDUDDDLLDUURLDLUDLLRRDUUDRLUULLUULDLURRUDLUURLRLRURDUDRRRDRLRUDLLLLURLULRLRLRRDDUDLRLDUUUULUDLLURRLURRDLRURRRULDDLLLRLRDLUDLLDDRULDUULRDDUUDDUDLURDULLDUDDLULRULDRLDDULDULLUDLULUDRURRR...
output:
893000
result:
ok 1 number(s): "893000"
Test #8:
score: 0
Accepted
time: 54ms
memory: 8880kb
input:
1 1000 1000 460035 RDDUURDULDDLDDLDDLDRRULLRLUURLURRRDRUDDDRDLDLDULUDLRLLRRLRRURRRDLRLUDRDURULDRRDDDDDDLRLDULUULDUDRLLUUUURUUDRURLRRULDRDRUUUUULULRURDDRLRULLLRDRRULUDDUDDLLLRDRUULUUDDRLURDLDURRDLRRLDRRUDLUULRDLURULLDLRLLDDURDUDLDULDLLRULRDLRLUULLUDRUDDDLRRDULULLRUURLUURRLLLLRLDRURLLRLDRRDDDRLUUUUDUL...
output:
417
result:
ok 1 number(s): "417"
Test #9:
score: 0
Accepted
time: 23ms
memory: 7572kb
input:
1 1000 1000 992010 LLLLLDLDRRLUDRR
output:
1999
result:
ok 1 number(s): "1999"
Test #10:
score: 0
Accepted
time: 17ms
memory: 7564kb
input:
1 1000 1000 919600 LLDLRUDRLURRUDRDRRDLRUDLRRRUUULDLDURDDDRUURRRLLURULDRLRLULLULDRULULRLRRRURLDDDRUUULUDLLLLRRLLRDDRDULUDLRLRLDRLUDUDURRULUULLDULUULDLLDRDULUDLDULDDUULDDRRURDRDULRRLDRRDUURURRLUUUDRRLDRRDDLULRDDLDLLRLRLLLRULUUUURRRLDLRUDRRLRURDRLDULLLUDRULLDLDRRUUDLRRLLRLDDLUDLRLRRURUUDUULUDURDURRLUU...
output:
944
result:
ok 1 number(s): "944"
Test #11:
score: 0
Accepted
time: 40ms
memory: 7888kb
input:
1 1000 1000 804351 DLRLDLLLLUDRDURRLDDRRLRUULURURDDDRDLRUDDULRRLLULURDRUUDRURRLURRRDRURRDRLULRDLRRDRRDDUDLUDLDULRUURRLRUUDRLDDRDDUUDULUULUUUDLRURULLRDUUDDDRRLDRUDDUUDRURLRDRUDLRLDDRRLLRLRDUDDULLULRLLDDUDDDUULDULLRRULULDUUULUDRRDRLUDLRRDDUDLRRDDLDLDRUULRRRRRLRLULLRDDRDDDULDRRURUDDLURLRLURLRDRULUDULUU...
output:
640000
result:
ok 1 number(s): "640000"