QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#608822 | #9424. Stop the Castle 2 | real_sigma_team | AC ✓ | 412ms | 32924kb | C++23 | 5.1kb | 2024-10-04 04:37:22 | 2024-10-04 04:37:22 |
Judging History
answer
#include <bits/stdc++.h>
#include <immintrin.h>
using namespace std;
using ll = long long;
using ld = long double;
# define x first
# define y second
# define all(x) x.begin(), x.end()
# define rall(x) x.rbegin(), x.rend()
mt19937 mt(123);
void solve();
void init();
int32_t main() {
#ifndef LOCAL
cin.tie(nullptr)->sync_with_stdio(false);
#endif
init();
cout << fixed << setprecision(10);
int t = 1;
cin >> t;
while (t--) {
solve();
}
}
void init() {}
int get(int x, vector<int>& dsu) {
return dsu[x] == x ? x : dsu[x] = get(dsu[x], dsu);
}
void merge(int x, int y, vector<int>& dsu) {
dsu[get(y, dsu)] = get(x, dsu);
}
int tim;
bool try_kun(int s, vector<int>& used, vector<vector<int>>& g, vector<int>& pr) {
used[s] = tim;
for (int i : g[s]) {
if (used[i] < tim) {
if (pr[i] == -1) {
pr[s] = i;
pr[i] = s;
return true;
}
}
}
for (int i : g[s]) {
if (used[i] < tim && used[pr[i]] < tim) {
used[i] = tim;
if (try_kun(pr[i], used, g, pr)) {
pr[s] = i;
pr[i] = s;
return true;
}
}
}
return false;
}
void solve() {
int n, m, k;
cin >> n >> m >> k;
vector<int> uv(m, 0), uh(m, 0);
vector<pair<int, int>> a(n), b(m);
unordered_map<int, vector<pair<int, int>>> v, h;
for (int i = 0; i < n; i++) {
cin >> a[i].x >> a[i].y;
v[a[i].x].emplace_back(a[i].y, -1);
h[a[i].y].emplace_back(a[i].x, -1);
}
vector<int> dsuv(m), dsuh(m);
for (int i = 0; i < m; i++) {
cin >> b[i].x >> b[i].y;
v[b[i].x].emplace_back(b[i].y, i);
h[b[i].y].emplace_back(b[i].x, i);
dsuv[i] = i;
dsuh[i] = i;
}
int ans = 0;
for (auto [tr, vc] : v) {
sort(all(vc));
while (!vc.empty() && vc.back().y != -1) {
vc.pop_back();
}
reverse(all(vc));
while (!vc.empty() && vc.back().y != -1) {
vc.pop_back();
}
reverse(all(vc));
for (int i = 0; i + 1 < vc.size(); i++) {
if (vc[i].y != -1 && vc[i + 1].y != -1) {
merge(vc[i].y, vc[i + 1].y, dsuv);
}
if (vc[i].y == -1 && vc[i + 1].y == -1) {
ans++;
}
if (vc[i].y != -1) {
uv[vc[i].y] = 1;
}
}
}
for (auto [tr, vc] : h) {
sort(all(vc));
while (!vc.empty() && vc.back().y != -1) {
vc.pop_back();
}
reverse(all(vc));
while (!vc.empty() && vc.back().y != -1) {
vc.pop_back();
}
reverse(all(vc));
for (int i = 0; i + 1 < vc.size(); i++) {
if (vc[i].y != -1 && vc[i + 1].y != -1) {
merge(vc[i].y, vc[i + 1].y, dsuh);
}
if (vc[i].y == -1 && vc[i + 1].y == -1) {
ans++;
}
if (vc[i].y != -1) {
uh[vc[i].y] = 1;
}
}
}
vector<vector<int>> g(m);
vector<int> pr(2 * m, -1), cost(m, 0), usedv(m, 0), usedh(m, 0), used(2 * m, 0);
for (int i = 0; i < m; i++) {
if (uv[i] && uh[i]) {
g[get(i, dsuv)].push_back(get(i, dsuh) + m);
}
}
vector<pair<int, int>> ord(m);
for (int i = 0; i < m; i++) {
ord[i] = {g[i].size(), i};
}
sort(all(ord));
for (int tr = 0; tr < m; tr++) {
int i = ord[tr].y;
for (int j : g[i]) {
if (!used[j - m]) {
pr[i] = j;
pr[j] = i;
used[j - m] = 1;
break;
}
}
}
tim = 2;
for (int i = 0; i < m; i++) {
if (pr[i] == -1) {
try_kun(i, used, g, pr);
tim++;
}
}
for (int i = 0; i < m; i++) {
if (uv[i] && uh[i] && pr[get(i, dsuv)] == get(i, dsuh) + m) {
cost[i] = 2;
usedv[get(i, dsuv)] = 1;
usedh[get(i, dsuh)] = 1;
}
}
for (int i = 0; i < m; i++) {
if (uv[i] && !usedv[get(i, dsuv)]) {
cost[i] = 1;
usedv[get(i, dsuv)] = 1;
}
if (uh[i] && !usedh[get(i, dsuh)]) {
cost[i] = 1;
usedh[get(i, dsuh)] = 1;
}
}
vector<int> res;
for (int i = 0; i < m && res.size() < k; i++) {
if (!cost[i]) {
res.push_back(i + 1);
}
}
for (int i = 0; i < m && res.size() < k; i++) {
if (cost[i] == 1) {
res.push_back(i + 1);
ans++;
}
}
for (int i = 0; i < m && res.size() < k; i++) {
if (cost[i] == 2) {
res.push_back(i + 1);
ans += 2;
}
}
cout << ans << '\n';
for (int i : res) {
cout << i << ' ';
}
cout << '\n';
}
这程序好像有点Bug,我给组数据试试?
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 0ms
memory: 3660kb
input:
3 8 6 4 1 3 2 1 2 6 4 1 4 7 6 1 6 3 6 6 2 3 3 1 4 3 4 6 5 2 6 4 3 2 1 10 12 10 10 10 11 1 4 1 5 1 3 2 1 1 2 1 2 2 2 3
output:
4 3 5 2 6 2 1 0 1 2
result:
ok ok 3 cases (3 test cases)
Test #2:
score: 0
Accepted
time: 55ms
memory: 6428kb
input:
1224 11 17 14 7 3 4 2 8 13 3 15 3 4 5 11 10 2 3 3 8 6 7 11 2 3 10 4 1 3 12 1 2 5 11 9 11 6 11 10 8 15 1 5 9 14 4 11 1 6 10 7 7 6 11 4 8 4 1 11 18 3 2 14 8 2 14 13 13 9 12 14 12 5 6 8 1 10 5 8 6 8 9 6 6 7 5 12 11 6 11 13 5 1 10 7 6 14 5 6 15 2 4 11 1 1 6 4 14 14 13 9 9 3 10 12 7 5 8 13 9 14 1 9 8 4 9...
output:
7 1 2 3 4 5 6 7 8 9 10 11 12 13 15 15 1 2 0 1 2 3 4 0 1 2 3 4 5 6 7 8 11 1 3 8 2 3 1 0 1 2 3 4 5 6 7 8 9 10 11 12 1 1 2 3 4 5 6 7 8 1 2 3 1 1 2 3 4 5 6 7 8 7 1 2 10 1 2 3 1 1 2 3 4 5 6 7 8 10 11 12 0 1 1 1 2 0 1 2 3 7 1 2 3 4 6 2 2 4 5 6 7 4 1 2 3 4 5 6 1 1 1 1 2 3 4 5 6 16 2 5 ...
result:
ok ok 1224 cases (1224 test cases)
Test #3:
score: 0
Accepted
time: 49ms
memory: 17776kb
input:
1 86289 95092 40401 911 152 1 270 135 731 347 451 283 224 338 348 166 346 12 385 590 763 939 176 232 405 122 946 397 576 795 823 546 392 33 718 444 598 954 852 185 662 732 539 172 681 386 148 76 495 163 323 711 201 278 363 531 275 66 122 823 983 234 792 102 188 985 423 804 712 419 636 318 331 693 68...
output:
81531 1 4 8 11 12 25 31 34 35 41 47 49 51 52 53 55 56 57 61 68 71 76 78 84 92 97 98 101 108 109 113 116 119 120 122 123 125 126 131 133 135 140 141 144 147 149 151 152 155 157 158 163 166 170 174 177 182 183 184 186 187 188 192 193 196 199 205 206 208 209 210 214 220 221 225 230 235 236 237 238 240 ...
result:
ok ok 1 cases (1 test case)
Test #4:
score: 0
Accepted
time: 86ms
memory: 32096kb
input:
1 99057 99722 73893 190482185 274379837 466851670 641324039 993028302 128875937 102891466 286559847 526771097 794238060 565736409 328262657 190329865 598878250 790626887 595298790 308031819 470646878 341575785 374318107 257299536 280924175 64420619 591124604 323023069 811512407 428956686 719615923 2...
output:
82045 1 6 9 10 11 13 15 16 18 19 20 21 22 24 25 28 29 30 33 34 35 36 37 39 43 45 49 50 51 52 54 55 59 60 61 62 65 66 67 69 70 71 79 81 82 83 87 89 90 91 93 94 95 96 99 100 101 102 104 105 107 109 110 111 112 113 114 118 120 128 129 131 133 136 137 138 142 143 147 148 149 151 152 153 154 155 156 159 ...
result:
ok ok 1 cases (1 test case)
Test #5:
score: 0
Accepted
time: 412ms
memory: 22828kb
input:
1 100000 99990 27662 913840909 999962982 690565691 31053 780601566 31053 54745498 31053 5383 859704869 538124857 999962982 5383 66851413 1444277 31053 119603839 999962982 999833258 543197820 999833258 349576387 999833258 759855830 999833258 124692224 266093388 999962982 5383 100041707 999833258 2843...
output:
100891 1 3 4 5 6 9 10 11 12 13 14 15 16 17 19 20 21 22 24 25 26 27 28 30 31 33 34 35 36 38 39 43 44 45 46 47 48 50 51 52 53 54 55 56 57 58 62 65 68 69 70 71 72 73 76 78 79 80 81 83 84 85 87 88 89 92 93 94 95 99 100 102 103 104 105 106 107 108 110 112 113 114 116 117 118 119 120 121 122 123 124 126 1...
result:
ok ok 1 cases (1 test case)
Test #6:
score: 0
Accepted
time: 56ms
memory: 16156kb
input:
1 100000 49997 21428 9380 4333 9380 999999628 49202 4333 49202 999999628 50841 4333 50841 999999628 77418 4333 77418 999999628 95722 4333 95722 999999628 144002 4333 144002 999999628 234359 4333 234359 999999628 268942 4333 268942 999999628 288956 4333 288956 999999628 415094 4333 415094 999999628 4...
output:
100000 2 7 8 10 11 17 19 22 24 26 36 37 38 42 43 49 53 54 55 60 61 62 63 64 65 66 67 68 69 71 74 81 84 85 88 89 90 93 94 96 97 98 100 101 102 105 110 111 114 115 117 118 119 120 121 123 125 126 127 128 129 131 132 136 137 140 143 149 150 151 156 157 159 160 161 163 167 168 169 171 173 174 175 178 17...
result:
ok ok 1 cases (1 test case)
Test #7:
score: 0
Accepted
time: 84ms
memory: 32924kb
input:
1 100000 100000 76259 931427170 7 367311884 7 646435086 7 925372747 7 371054451 7 284185575 7 695090232 7 889183241 7 615617158 7 44230096 7 293281406 7 758261641 7 685549291 7 679471071 7 723138327 7 901136691 7 49281635 7 256352978 7 320188290 7 78730802 7 788131872 7 234735044 7 664906524 7 79430...
output:
76258 463 577 797 819 881 890 900 923 993 1008 1061 1208 1267 1273 1283 1330 1357 1370 1381 1402 1438 1488 1493 1550 1556 1566 1614 1619 1655 1673 1721 1727 1758 1767 1804 1813 1829 1831 1844 1882 1906 1908 1914 1941 2020 2100 2193 2201 2209 2245 2284 2289 2303 2456 2466 2476 2484 2504 2537 2557 256...
result:
ok ok 1 cases (1 test case)
Test #8:
score: 0
Accepted
time: 27ms
memory: 16476kb
input:
1 100000 49999 24999 2 1 2 1000000000 3 1 3 1000000000 4 1 4 1000000000 5 1 5 1000000000 6 1 6 1000000000 7 1 7 1000000000 8 1 8 1000000000 9 1 9 1000000000 10 1 10 1000000000 11 1 11 1000000000 12 1 12 1000000000 13 1 13 1000000000 14 1 14 1000000000 15 1 15 1000000000 16 1 16 1000000000 17 1 17 10...
output:
99996 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 10...
result:
ok ok 1 cases (1 test case)
Test #9:
score: 0
Accepted
time: 35ms
memory: 9004kb
input:
556 16 6 3 2 1 2 1000000000 3 1 3 1000000000 4 1 4 1000000000 1 2 1000000000 2 1 3 1000000000 3 1 4 1000000000 4 1 5 1000000000 5 1 6 1000000000 6 2 3 3 3 3 2 4 2 2 4 4 4 32 12 6 2 1 2 1000000000 3 1 3 1000000000 4 1 4 1000000000 5 1 5 1000000000 6 1 6 1000000000 7 1 7 1000000000 8 1 8 1000000000 9 ...
output:
14 2 4 5 32 2 4 5 10 11 12 31 1 2 4 9 10 12 13 15 8 1 13 2 4 19 4 5 7 8 9 11 1 5 6 20 3 5 6 15 3 4 6 7 33 4 6 8 9 10 12 14 31 1 2 3 5 8 10 14 15 19 1 5 6 9 10 31 1 3 4 7 8 15 3 4 5 8 28 4 6 7 8 10 11 1 19 1 4 6 8 9 23 1 5 6 9 10 12 34 2 3 4 5 6 8 9 15 31 1 2 4 6 10 11 15 16 29 2 ...
result:
ok ok 556 cases (556 test cases)
Test #10:
score: 0
Accepted
time: 48ms
memory: 17732kb
input:
1 100000 50000 25000 2 1 2 1000000000 3 1 3 1000000000 4 1 4 1000000000 5 1 5 1000000000 6 1 6 1000000000 7 1 7 1000000000 8 1 8 1000000000 9 1 9 1000000000 10 1 10 1000000000 11 1 11 1000000000 12 1 12 1000000000 13 1 13 1000000000 14 1 14 1000000000 15 1 15 1000000000 16 1 16 1000000000 17 1 17 10...
output:
99996 1 4 5 7 8 10 11 14 15 18 19 20 22 25 28 30 33 34 36 38 39 41 43 45 46 47 48 51 54 55 56 57 60 61 63 64 65 68 78 82 85 88 89 90 91 94 97 102 103 104 109 111 113 114 115 117 118 119 121 122 124 129 130 132 135 137 138 141 143 145 146 147 148 149 151 152 153 155 156 157 158 159 160 162 164 165 17...
result:
ok ok 1 cases (1 test case)
Test #11:
score: 0
Accepted
time: 31ms
memory: 8448kb
input:
556 32 15 7 2 1 2 1000000000 3 1 3 1000000000 4 1 4 1000000000 5 1 5 1000000000 6 1 6 1000000000 7 1 7 1000000000 8 1 8 1000000000 9 1 9 1000000000 1 2 1000000000 2 1 3 1000000000 3 1 4 1000000000 4 1 5 1000000000 5 1 6 1000000000 6 1 7 1000000000 7 1 8 1000000000 8 1 9 1000000000 9 7 6 4 3 5 4 2 2 ...
output:
28 1 2 3 7 8 10 15 11 1 4 20 3 4 23 4 7 8 9 10 26 1 2 6 7 8 17 1 10 2 31 2 3 6 8 14 1 31 2 3 4 5 7 11 14 34 2 3 4 5 7 8 15 16 3 32 1 2 6 7 8 29 3 5 28 1 6 7 8 10 12 15 31 1 2 4 5 6 8 14 25 3 5 8 9 15 2 4 5 29 1 5 6 9 11 31 1 4 7 8 15 1 2 7 29 1 3 27 1 3 6 19 5 6 7 9 25 1 6 7 ...
result:
ok ok 556 cases (556 test cases)
Test #12:
score: 0
Accepted
time: 43ms
memory: 16140kb
input:
1 100000 49999 24999 2 1 2 1000000000 3 1 3 1000000000 4 1 4 1000000000 5 1 5 1000000000 6 1 6 1000000000 7 1 7 1000000000 8 1 8 1000000000 9 1 9 1000000000 10 1 10 1000000000 11 1 11 1000000000 12 1 12 1000000000 13 1 13 1000000000 14 1 14 1000000000 15 1 15 1000000000 16 1 16 1000000000 17 1 17 10...
output:
99996 1 3 4 6 8 10 12 17 20 22 25 26 27 29 30 32 33 34 35 37 39 42 44 47 48 49 51 54 58 59 60 61 68 69 70 72 74 75 77 78 81 82 84 85 88 89 90 91 93 94 96 97 98 100 103 110 111 112 114 115 116 120 123 124 127 129 130 133 135 136 139 140 143 145 146 149 150 152 153 160 163 169 171 174 175 176 178 179 ...
result:
ok ok 1 cases (1 test case)
Test #13:
score: 0
Accepted
time: 23ms
memory: 9056kb
input:
556 22 1 1 2 1 2 1000000000 1 2 1000000000 2 1 3 1000000000 3 1 4 1000000000 4 1 5 1000000000 5 1 6 1000000000 6 1 7 1000000000 7 1 8 1000000000 8 1 9 1000000000 9 1 10 1000000000 10 1 11 1000000000 11 2 2 18 3 1 2 1 2 1000000000 3 1 3 1000000000 1 2 1000000000 2 1 3 1000000000 3 1 4 1000000000 4 1 ...
output:
29 1 19 1 20 1 5 14 2 5 25 2 28 1 2 3 4 6 8 9 23 1 29 3 5 8 10 11 28 2 3 5 6 5 1 23 6 7 8 9 11 31 2 3 5 10 13 14 15 29 2 3 7 1 26 1 27 2 3 6 9 12 13 24 1 5 7 14 3 5 32 3 4 5 6 10 11 13 14 24 1 2 5 27 1 2 3 6 7 10 32 1 2 3 4 5 9 14 15 30 1 3 5 24 2 3 7 15 2 3 6 26 1 18 1 2 6...
result:
ok ok 556 cases (556 test cases)
Test #14:
score: 0
Accepted
time: 51ms
memory: 17952kb
input:
1 100000 49999 24999 2 1 2 1000000000 3 1 3 1000000000 4 1 4 1000000000 5 1 5 1000000000 6 1 6 1000000000 7 1 7 1000000000 8 1 8 1000000000 9 1 9 1000000000 10 1 10 1000000000 11 1 11 1000000000 12 1 12 1000000000 13 1 13 1000000000 14 1 14 1000000000 15 1 15 1000000000 16 1 16 1000000000 17 1 17 10...
output:
99996 1 2 8 11 13 14 15 16 17 19 20 21 26 29 31 36 39 42 45 46 49 51 53 54 55 57 61 62 64 67 68 69 71 73 74 76 78 79 80 81 82 84 85 88 89 91 94 100 101 103 104 109 110 112 113 115 116 120 123 127 130 131 132 133 136 141 147 149 150 151 153 154 155 158 159 161 163 167 168 170 171 173 174 175 177 178 ...
result:
ok ok 1 cases (1 test case)
Test #15:
score: 0
Accepted
time: 117ms
memory: 16132kb
input:
1 100000 49998 34141 2 1 2 1000000000 3 1 3 1000000000 4 1 4 1000000000 5 1 5 1000000000 6 1 6 1000000000 7 1 7 1000000000 8 1 8 1000000000 9 1 9 1000000000 10 1 10 1000000000 11 1 11 1000000000 12 1 12 1000000000 13 1 13 1000000000 14 1 14 1000000000 15 1 15 1000000000 16 1 16 1000000000 17 1 17 10...
output:
118282 1 3 4 5 6 7 8 10 11 12 14 15 16 19 23 25 26 27 28 29 30 32 33 34 35 38 39 42 43 44 45 46 47 48 49 50 51 53 55 56 57 58 59 60 63 65 66 67 68 69 71 72 73 74 75 76 77 79 80 81 83 85 86 87 88 91 92 93 94 95 98 99 101 102 103 104 109 112 113 114 115 116 117 118 119 120 122 124 127 128 131 133 134 ...
result:
ok ok 1 cases (1 test case)
Test #16:
score: 0
Accepted
time: 59ms
memory: 20356kb
input:
1 100000 82275 67072 2 1 2 1000000000 3 1 3 1000000000 4 1 4 1000000000 5 1 5 1000000000 6 1 6 1000000000 7 1 7 1000000000 8 1 8 1000000000 9 1 9 1000000000 10 1 10 1000000000 11 1 11 1000000000 12 1 12 1000000000 13 1 13 1000000000 14 1 14 1000000000 15 1 15 1000000000 16 1 16 1000000000 17 1 17 10...
output:
119590 1 7 9 21 22 26 31 35 37 40 45 48 58 61 71 73 85 86 89 91 93 94 97 99 105 119 120 123 125 127 129 131 134 136 143 148 151 152 153 155 156 162 166 171 174 178 179 180 185 186 188 191 193 194 197 199 211 217 218 220 221 223 233 234 241 242 243 249 250 251 254 256 259 260 261 268 269 273 276 277 ...
result:
ok ok 1 cases (1 test case)
Test #17:
score: 0
Accepted
time: 86ms
memory: 11392kb
input:
556 30 12 6 2 1 2 1000000000 3 1 3 1000000000 4 1 4 1000000000 5 1 5 1000000000 6 1 6 1000000000 7 1 7 1000000000 8 1 8 1000000000 1 2 1000000000 2 1 3 1000000000 3 1 4 1000000000 4 1 5 1000000000 5 1 6 1000000000 6 1 7 1000000000 7 1 8 1000000000 8 1 9 1000000000 9 2 6 2 8 3 4 4 4 4 8 5 3 5 7 5 8 6...
output:
29 2 4 8 10 11 7 19 1 4 7 9 11 3 6 8 10 25 3 8 12 2 4 5 6 9 10 11 13 3 4 5 31 1 4 5 6 9 10 11 12 13 14 17 18 19 20 23 24 25 27 3 8 16 22 26 36 1 4 9 13 5 8 10 18 2 3 4 5 20 3 7 2 4 6 20 2 7 8 10 11 12 13 15 16 17 18 3 4 5 6 12 2 3 4 5 8 2 3 4 6 7 8 15 2 3 4 5 6 22 2 3 4 6 8 9 10 11 15 16...
result:
ok ok 556 cases (556 test cases)
Test #18:
score: 0
Accepted
time: 240ms
memory: 23484kb
input:
1 100000 99991 75553 2 1 2 1000000000 3 1 3 1000000000 4 1 4 1000000000 5 1 5 1000000000 6 1 6 1000000000 7 1 7 1000000000 8 1 8 1000000000 9 1 9 1000000000 10 1 10 1000000000 11 1 11 1000000000 12 1 12 1000000000 13 1 13 1000000000 14 1 14 1000000000 15 1 15 1000000000 16 1 16 1000000000 17 1 17 10...
output:
101120 2 3 4 6 7 8 10 12 13 14 16 17 18 19 20 21 23 24 25 27 28 30 31 33 34 35 37 39 40 41 42 43 47 48 50 52 54 55 56 57 59 60 61 62 64 66 67 68 69 70 71 73 74 76 77 78 79 80 81 82 85 86 87 88 89 90 91 92 93 95 96 98 99 100 101 102 103 105 106 108 109 110 112 113 114 115 116 117 119 120 121 122 123 ...
result:
ok ok 1 cases (1 test case)
Extra Test:
score: 0
Extra Test Passed