QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#266546 | #5414. Stop, Yesterday Please No More | khoray# | AC ✓ | 408ms | 76760kb | C++17 | 3.3kb | 2023-11-26 15:17:50 | 2023-11-26 15:17:51 |
Judging History
answer
#include<bits/stdc++.h>
using namespace std;
const int inf = 1e9;
struct node {
int x, y, qid, zf;
bool operator < (const node &o) const {
if(x == o.x) {
return qid < o.qid;
} else {
return x < o.x;
}
}
};
void solve() {
int n, m, k; cin >> n >> m >> k;
int mi_x = 0, ma_x = 0, mi_y = 0, ma_y = 0;
int nowx = 0, nowy = 0;
string s; cin >> s;
set<pair<int, int>> dot;
dot.insert({0, 0});
for(int i = 0; i < (int) s.length(); i++) {
if(s[i] == 'U') {
nowy++;
} else if(s[i] == 'D') nowy--;
else if(s[i] == 'L') nowx--;
else if(s[i] == 'R') nowx++;
// cerr << " i = " << i << " " << nowx << " " << nowy << "\n";
mi_x = min(mi_x, nowx);
ma_x = max(ma_x, nowx);
mi_y = min(mi_y, nowy);
ma_y = max(ma_y, nowy);
dot.insert({-nowx, -nowy});
}
int sx = ma_x + 1, sy = ma_y + 1;
// cerr << "sx = " << sx << " sy = " << sy << '\n';
vector<node> v;
for(auto p : dot) {
v.push_back({p.first + ma_x + 1, p.second + ma_y + 1, -1, 0});
}
// cerr << "dots = \n";
int fenwick_mx = 1;
for(auto p : v) {
// cerr << p.x << " " << p.y << "\n";
fenwick_mx = max(fenwick_mx, p.y);
}
fenwick_mx += 10;
vector<int> c(fenwick_mx);
auto query = [&] (int x) {
if(x >= fenwick_mx) x = fenwick_mx - 1;
if(x <= 0) return 0;
int ret = 0;
while(x) {
ret += c[x];
x -= x & -x;
}
return ret;
};
auto add = [&] (int x) {
while(x < fenwick_mx) {
c[x]++;
x += x & -x;
}
};
// cerr << mi_y << "\n";
int lx = -mi_x + 1, rx = m - ma_x;
int ly = -mi_y + 1, ry = n - ma_y;
// cerr << "lrxy: " << lx << " " << rx << " " << ly << " " << ry << "\n";
if(lx > rx || ly > ry) {
if(k == 0) {
cout << n * m << "\n";
} else {
cout << 0 << "\n";
}
return;
}
for(int i = 1; i <= m; i++) {
for(int j = 1; j <= n; j++) {
int tx = sx - i + 1, ty = sy - j + 1;
int ttx = tx + lx - 1, tty = ty + ly - 1;
// if(i == 3 && j == 1) {
// cerr << "ttdebug = " << ttx - 1 + rx - lx + 1 << " " << tty - 1 + ry - ly + 1 << "\n";
// }
v.push_back({ttx - 1, tty - 1, (i - 1) * n + j, 1});
v.push_back({ttx - 1, tty - 1 + ry - ly + 1, (i - 1) * n + j, -1});
v.push_back({ttx - 1 + rx - lx + 1, tty - 1, (i - 1) * n + j, -1});
v.push_back({ttx - 1 + rx - lx + 1, tty - 1 + ry - ly + 1, (i - 1) * n + j, 1});
}
}
vector<int> ans(n * m + 1);
sort(v.begin(), v.end());
for(node nd : v) {
if(nd.qid == -1) {
add(nd.y);
} else {
ans[nd.qid] += nd.zf * query(nd.y);
}
}
// cerr << ans[14] << "\n";
int cnt = 0;
for(int i = 1; i <= n * m; i++) {
if(ans[i] == (rx - lx + 1) * (ry - ly + 1) - k) cnt++;
}
cout << cnt << '\n';
}
int main() {
cin.tie(0)->sync_with_stdio(false);
int t; cin >> t;
while(t--) solve();
return 0;
}
/*
4 5 3
ULDDRR
*/
詳細信息
Test #1:
score: 100
Accepted
time: 0ms
memory: 3592kb
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: 133ms
memory: 4968kb
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: 235ms
memory: 71076kb
input:
1 1000 1000 979065 DDUULULUDULLULLDLUULURRLDURLRDLRRUURUUUDLRLUUDUUDUDLLDDDULU
output:
958416
result:
ok 1 number(s): "958416"
Test #4:
score: 0
Accepted
time: 242ms
memory: 71412kb
input:
1 1000 1000 943471 LRLDLURLDLRDRDUULULRDDLLRURDUURLLDDLDLDDLLLUUURLDRUDRLLUUUUUDLUUDLURURRDLRLRRRLULRRULURLRRDLDRLUDRRLDDLUDRRLLUDLLLRDULRRRRLDUUDRDLULUUUUDRRDULUDLLUUDLDURDRRLRRLDRLDDRURURLUULRRLDLLRLRDRRUULDLDLULLDLLRULLRUULURDURRLUUDUULLULDLRUDDLRLRLLUDDDLLLUDRRLDDULRRURRDURDDRDLLULRLULURLRDLLURD...
output:
889224
result:
ok 1 number(s): "889224"
Test #5:
score: 0
Accepted
time: 364ms
memory: 76760kb
input:
1 1000 1000 315808 LLRURURRDDDULLDDUDRDLRLLLDDDLUDRDURLDULRLRULUUDLUULUUDULLLLDDURLDUULUUDLLDLLDRUDUULRLLRLRUURLRLULLDDLLDUDLLRUUDRLDLUULDLLDRRRURDULLDRRRDURURDRLDURURUDLURLDURRLRRUDUDURDRLRRRDLRRURLURUDRRLDLRULLDLUURDURLURLLRDLRDRUURURDRUDUUUDLRRLUDLUUDUDDRRDUULUUDDRLLULDUUDRURRDRLULRLULDURLURUDLLD...
output:
426
result:
ok 1 number(s): "426"
Test #6:
score: 0
Accepted
time: 233ms
memory: 71132kb
input:
1 1000 1000 986018 LLULDRRRDDURRUDRUURRRDDLUUDUULRULRDULLD
output:
972180
result:
ok 1 number(s): "972180"
Test #7:
score: 0
Accepted
time: 247ms
memory: 70384kb
input:
1 1000 1000 945431 DDRRURUUDLDULLDLDDLRULDLLDDRRLUDRLUURRLDRDLURUURRRRLRURLURULLLDRDDDRRRLDLDRLRDDUURRURDDDLRUURLUURLRDUDDDLLDUURLDLUDLLRRDUUDRLUULLUULDLURRUDLUURLRLRURDUDRRRDRLRUDLLLLURLULRLRLRRDDUDLRLDUUUULUDLLURRLURRDLRURRRULDDLLLRLRDLUDLLDDRULDUULRDDUUDDUDLURDULLDUDDLULRULDRLDDULDULLUDLULUDRURRR...
output:
893000
result:
ok 1 number(s): "893000"
Test #8:
score: 0
Accepted
time: 408ms
memory: 74652kb
input:
1 1000 1000 460035 RDDUURDULDDLDDLDDLDRRULLRLUURLURRRDRUDDDRDLDLDULUDLRLLRRLRRURRRDLRLUDRDURULDRRDDDDDDLRLDULUULDUDRLLUUUURUUDRURLRRULDRDRUUUUULULRURDDRLRULLLRDRRULUDDUDDLLLRDRUULUUDDRLURDLDURRDLRRLDRRUDLUULRDLURULLDLRLLDDURDUDLDULDLLRULRDLRLUULLUDRUDDDLRRDULULLRUURLUURRLLLLRLDRURLLRLDRRDDDRLUUUUDUL...
output:
417
result:
ok 1 number(s): "417"
Test #9:
score: 0
Accepted
time: 237ms
memory: 70440kb
input:
1 1000 1000 992010 LLLLLDLDRRLUDRR
output:
1999
result:
ok 1 number(s): "1999"
Test #10:
score: 0
Accepted
time: 266ms
memory: 71504kb
input:
1 1000 1000 919600 LLDLRUDRLURRUDRDRRDLRUDLRRRUUULDLDURDDDRUURRRLLURULDRLRLULLULDRULULRLRRRURLDDDRUUULUDLLLLRRLLRDDRDULUDLRLRLDRLUDUDURRULUULLDULUULDLLDRDULUDLDULDDUULDDRRURDRDULRRLDRRDUURURRLUUUDRRLDRRDDLULRDDLDLLRLRLLLRULUUUURRRLDLRUDRRLRURDRLDULLLUDRULLDLDRRUUDLRRLLRLDDLUDLRLRRURUUDUULUDURDURRLUU...
output:
944
result:
ok 1 number(s): "944"
Test #11:
score: 0
Accepted
time: 343ms
memory: 72284kb
input:
1 1000 1000 804351 DLRLDLLLLUDRDURRLDDRRLRUULURURDDDRDLRUDDULRRLLULURDRUUDRURRLURRRDRURRDRLULRDLRRDRRDDUDLUDLDULRUURRLRUUDRLDDRDDUUDULUULUUUDLRURULLRDUUDDDRRLDRUDDUUDRURLRDRUDLRLDDRRLLRLRDUDDULLULRLLDDUDDDUULDULLRRULULDUUULUDRRDRLUDLRRDDUDLRRDDLDLDRUULRRRRRLRLULLRDDRDDDULDRRURUDDLURLRLURLRDRULUDULUU...
output:
640000
result:
ok 1 number(s): "640000"