QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#500621 | #1142. Fountain Parks | Dan4Life# | 5 | 29ms | 22000kb | C++23 | 2.8kb | 2024-08-01 16:26:28 | 2024-08-01 16:26:29 |
Judging History
answer
#include "parks.h"
#include <bits/stdc++.h>
using namespace std;
#define pb push_back
#define sz(a) (int)a.size()
#define all(a) begin(a),end(a)
using vi = vector<int>;
using ll = long long;
using ar2 = array<int,2>;
using ar3 = array<int,3>;
const int mxN = (int)2e5+10;
int n;
struct Edge{
int fa, fb, x, y;
Edge(int a=0, int b=0, int _x=-1, int _y=-1){
fa=a, fb=b, x=_x, y=_y;
}
};
vector<Edge> edges;
vector<ar3> fountains;
template<int SZ> struct DSU{
int p[SZ];
vector<int> comp[SZ];
void init(int n){
for(int i = 0; i < n; i++){
p[i]=i; comp[i].clear();
comp[i].pb(i);
}
}
int findSet(int i){return p[i]==i?i:p[i]=findSet(p[i]);}
bool isSameSet(int i, int j) {return findSet(i)==findSet(j);}
void unionSet(int i, int j){
int x = findSet(i), y = findSet(j);
if(x==y) return;
if(sz(comp[x]) < sz(comp[y])) swap(x,y);
p[y]=x; for(auto u : comp[y]) comp[x].pb(u);
}
int findSz(int i) { return sz(comp[findSet(i)]); }
};
DSU<mxN> dsu;
set<int> usedB;
int construct_roads(vi x, vi y) {
n = sz(x); dsu.init(n);
if (n==1){ build({}, {}, {}, {}); return 1; }
int mnX = *min_element(all(x));
int mxX = *max_element(all(x));
for(int i = 0; i < n; i++){
fountains.pb({x[i],y[i],i});
}
if(mnX==mxX){
sort(all(fountains),[&](ar3 a, ar3 b){ return a[1]<b[1]; });
for(int i = 1; i < sz(fountains); i++){
if(fountains[i][1]-fountains[i-1][1]==2){
auto [x1,y1,a] = fountains[i-1];
auto [x2,y2,b] = fountains[i];
dsu.unionSet(a,b);
edges.pb(Edge(a,b,x1-1,y1+1));
}
}
}
else if(mxX-mnX==2){
sort(all(fountains),[&](ar3 a, ar3 b){
if(a[0]!=b[0]) return a[0]<b[0];
return a[1]<b[1];
});
set<ar2> S; S.clear();
for(int i = sz(fountains)-1; i>=0; i--){
if(fountains[i][0]!=mxX) break;
S.insert({fountains[i][1], fountains[i][2]});
}
for(int i = 1; i < sz(fountains); i++){
if(fountains[i][0]!=fountains[i-1][0]) continue;
if(fountains[i][1]-fountains[i-1][1]==2){
auto [x1,y1,a] = fountains[i-1];
auto [x2,y2,b] = fountains[i];
dsu.unionSet(a,b);
if(x1==mnX) edges.pb(Edge(a,b,x1-1,y1+1));
else edges.pb(Edge(a,b,x1+1,y1+1));
}
}
for(int i = 0; i < sz(fountains); i++){
auto [x1,y1,a] = fountains[i];
if(x1!=mnX) break;
auto itr = S.lower_bound({y1,-1});
if(itr==end(S) or (*itr)[0]!=y1) continue;
auto [x2,y2,b] = fountains[(*itr)[1]];
dsu.unionSet(a,b);
edges.pb(Edge(a,b,x1+1,y1-1));
}
}
else if(mxX-mnX==4 and 0){ // currently false for now
sort(all(fountains),[&](ar3 a, ar3 b){
if(a[0]!=b[0]) return a[0]<b[0];
return a[1]<b[1];
});
}
else{
}
if(dsu.findSz(0)!=n) return 0;
vi U, V, A, B;
for(auto edge : edges){
U.pb(edge.fa), V.pb(edge.fb);
A.pb(edge.x), B.pb(edge.y);
}
build(U,V,A,B); return 1;
}
详细
Subtask #1:
score: 5
Accepted
Test #1:
score: 5
Accepted
time: 1ms
memory: 9000kb
input:
ba73dbf9c7d5e5202834d6a500541c 1 2 2
output:
3kr2yac8xnf3ktgcoqviaw115df6rra7is6p5uix OK 1 0
result:
ok
Test #2:
score: 5
Accepted
time: 0ms
memory: 8440kb
input:
ba73dbf9c7d5e5202834d6a500541c 2 2 2 2 4
output:
3kr2yac8xnf3ktgcoqviaw115df6rra7is6p5uix OK 1 1 0 1 1 3
result:
ok
Test #3:
score: 5
Accepted
time: 0ms
memory: 8480kb
input:
ba73dbf9c7d5e5202834d6a500541c 2 2 2 2 6
output:
3kr2yac8xnf3ktgcoqviaw115df6rra7is6p5uix OK 0
result:
ok
Test #4:
score: 5
Accepted
time: 1ms
memory: 8840kb
input:
ba73dbf9c7d5e5202834d6a500541c 3 2 2 2 4 2 6
output:
3kr2yac8xnf3ktgcoqviaw115df6rra7is6p5uix OK 1 2 0 1 1 3 1 2 1 5
result:
ok
Test #5:
score: 5
Accepted
time: 1ms
memory: 9020kb
input:
ba73dbf9c7d5e5202834d6a500541c 4 2 2 2 4 2 6 2 8
output:
3kr2yac8xnf3ktgcoqviaw115df6rra7is6p5uix OK 1 3 0 1 1 3 1 2 1 5 2 3 1 7
result:
ok
Test #6:
score: 5
Accepted
time: 1ms
memory: 8736kb
input:
ba73dbf9c7d5e5202834d6a500541c 3 2 2 2 4 2 8
output:
3kr2yac8xnf3ktgcoqviaw115df6rra7is6p5uix OK 0
result:
ok
Test #7:
score: 5
Accepted
time: 0ms
memory: 8500kb
input:
ba73dbf9c7d5e5202834d6a500541c 4 2 2 2 4 2 8 2 10
output:
3kr2yac8xnf3ktgcoqviaw115df6rra7is6p5uix OK 0
result:
ok
Test #8:
score: 5
Accepted
time: 2ms
memory: 8480kb
input:
ba73dbf9c7d5e5202834d6a500541c 4 2 2 2 4 2 6 2 10
output:
3kr2yac8xnf3ktgcoqviaw115df6rra7is6p5uix OK 0
result:
ok
Test #9:
score: 5
Accepted
time: 22ms
memory: 22000kb
input:
ba73dbf9c7d5e5202834d6a500541c 100000 2 15660 2 23918 2 132200 2 117654 2 162750 2 183010 2 75554 2 29740 2 185476 2 135138 2 194024 2 182274 2 1338 2 42922 2 51616 2 171196 2 159598 2 136432 2 84454 2 61806 2 136968 2 167442 2 150036 2 23974 2 10064 2 86342 2 146274 2 174318 2 130832 2 118838 2 180...
output:
3kr2yac8xnf3ktgcoqviaw115df6rra7is6p5uix OK 1 99999 13952 31503 1 3 31503 34333 1 5 34333 11184 1 7 11184 42839 1 9 42839 39415 1 11 39415 76798 1 13 76798 20588 1 15 20588 37623 1 17 37623 30774 1 19 30774 21798 1 21 21798 81338 1 23 81338 35924 1 25 35924 98098 1 27 98098 4388 1 29 4388 94082 1 31...
result:
ok
Test #10:
score: 5
Accepted
time: 5ms
memory: 9672kb
input:
ba73dbf9c7d5e5202834d6a500541c 10000 2 3124 2 3126 2 3128 2 3130 2 3132 2 3134 2 3136 2 3138 2 3140 2 3142 2 3144 2 3146 2 3148 2 3150 2 3152 2 3154 2 3156 2 3158 2 3160 2 3162 2 3164 2 3166 2 3168 2 3170 2 3172 2 3174 2 3176 2 3178 2 3180 2 3182 2 3184 2 3186 2 3188 2 3190 2 3192 2 3194 2 3196 2 31...
output:
3kr2yac8xnf3ktgcoqviaw115df6rra7is6p5uix OK 1 9999 0 1 1 3125 1 2 1 3127 2 3 1 3129 3 4 1 3131 4 5 1 3133 5 6 1 3135 6 7 1 3137 7 8 1 3139 8 9 1 3141 9 10 1 3143 10 11 1 3145 11 12 1 3147 12 13 1 3149 13 14 1 3151 14 15 1 3153 15 16 1 3155 16 17 1 3157 17 18 1 3159 18 19 1 3161 19 20 1 3163 20 21 1 ...
result:
ok
Test #11:
score: 5
Accepted
time: 18ms
memory: 15500kb
input:
ba73dbf9c7d5e5202834d6a500541c 53891 2 3566 2 3568 2 3570 2 3572 2 3574 2 3576 2 3578 2 3580 2 3582 2 3584 2 3586 2 3588 2 3590 2 3592 2 3594 2 3596 2 3598 2 3600 2 3602 2 3604 2 3606 2 3608 2 3610 2 3612 2 3614 2 3616 2 3618 2 3620 2 3622 2 3624 2 3626 2 3628 2 3630 2 3632 2 3634 2 3636 2 3638 2 36...
output:
3kr2yac8xnf3ktgcoqviaw115df6rra7is6p5uix OK 1 53890 0 1 1 3567 1 2 1 3569 2 3 1 3571 3 4 1 3573 4 5 1 3575 5 6 1 3577 6 7 1 3579 7 8 1 3581 8 9 1 3583 9 10 1 3585 10 11 1 3587 11 12 1 3589 12 13 1 3591 13 14 1 3593 14 15 1 3595 15 16 1 3597 16 17 1 3599 17 18 1 3601 18 19 1 3603 19 20 1 3605 20 21 1...
result:
ok
Test #12:
score: 5
Accepted
time: 3ms
memory: 10568kb
input:
ba73dbf9c7d5e5202834d6a500541c 14979 2 4954 2 4956 2 4958 2 4960 2 4962 2 4964 2 4966 2 4968 2 4970 2 4972 2 4974 2 4976 2 4978 2 4980 2 4982 2 4984 2 4986 2 4988 2 4990 2 4992 2 4994 2 4996 2 4998 2 5000 2 5002 2 5004 2 5006 2 5008 2 5010 2 5012 2 5014 2 5016 2 5018 2 5020 2 5022 2 5024 2 5026 2 50...
output:
3kr2yac8xnf3ktgcoqviaw115df6rra7is6p5uix OK 1 14978 0 1 1 4955 1 2 1 4957 2 3 1 4959 3 4 1 4961 4 5 1 4963 5 6 1 4965 6 7 1 4967 7 8 1 4969 8 9 1 4971 9 10 1 4973 10 11 1 4975 11 12 1 4977 12 13 1 4979 13 14 1 4981 14 15 1 4983 15 16 1 4985 16 17 1 4987 17 18 1 4989 18 19 1 4991 19 20 1 4993 20 21 1...
result:
ok
Test #13:
score: 5
Accepted
time: 3ms
memory: 12124kb
input:
ba73dbf9c7d5e5202834d6a500541c 44171 2 36500 2 36502 2 36504 2 36506 2 36508 2 36510 2 36512 2 36514 2 36516 2 36518 2 36520 2 36522 2 36524 2 36526 2 36528 2 36530 2 36532 2 36534 2 36536 2 36538 2 36540 2 36542 2 36544 2 36546 2 36548 2 36550 2 36552 2 36554 2 36556 2 36558 2 36560 2 36562 2 36564...
output:
3kr2yac8xnf3ktgcoqviaw115df6rra7is6p5uix OK 0
result:
ok
Test #14:
score: 5
Accepted
time: 2ms
memory: 8520kb
input:
ba73dbf9c7d5e5202834d6a500541c 1000 2 20406 2 20378 2 37840 2 37702 2 20448 2 37688 2 37780 2 20720 2 38256 2 20612 2 38050 2 20152 2 37880 2 20116 2 20030 2 20526 2 38324 2 20956 2 20852 2 20356 2 37668 2 20292 2 37648 2 20320 2 20078 2 38060 2 38014 2 37738 2 37878 2 20336 2 20472 2 20214 2 38340 ...
output:
3kr2yac8xnf3ktgcoqviaw115df6rra7is6p5uix OK 0
result:
ok
Test #15:
score: 5
Accepted
time: 0ms
memory: 8692kb
input:
ba73dbf9c7d5e5202834d6a500541c 2000 2 19578 2 1754 2 1760 2 130946 2 164378 2 1038 2 20302 2 131788 2 131632 2 164392 2 19868 2 164924 2 131380 2 130972 2 131348 2 1070 2 131568 2 19492 2 19876 2 131606 2 1142 2 1588 2 1424 2 1726 2 131416 2 946 2 20158 2 19574 2 20106 2 1736 2 1186 2 19476 2 164256...
output:
3kr2yac8xnf3ktgcoqviaw115df6rra7is6p5uix OK 0
result:
ok
Test #16:
score: 5
Accepted
time: 29ms
memory: 21540kb
input:
ba73dbf9c7d5e5202834d6a500541c 100000 2 103034 2 75068 2 69976 2 84860 2 113488 2 156808 2 109250 2 119184 2 169250 2 182382 2 161594 2 169232 2 41046 2 87158 2 10192 2 32612 2 84228 2 49708 2 157912 2 160028 2 160234 2 167142 2 22010 2 37360 2 64100 2 113388 2 81460 2 52862 2 77902 2 155958 2 13330...
output:
3kr2yac8xnf3ktgcoqviaw115df6rra7is6p5uix OK 1 99999 82261 74843 1 3 74843 8766 1 5 8766 52706 1 7 52706 50332 1 9 50332 87757 1 11 87757 96100 1 13 96100 10691 1 15 10691 67720 1 17 67720 56430 1 19 56430 82376 1 21 82376 85275 1 23 85275 77807 1 25 77807 58592 1 27 58592 63926 1 29 63926 32662 1 31...
result:
ok
Subtask #2:
score: 0
Wrong Answer
Dependency #1:
100%
Accepted
Test #17:
score: 0
Wrong Answer
time: 2ms
memory: 8504kb
input:
ba73dbf9c7d5e5202834d6a500541c 4 4 4 2 4 4 2 2 2
output:
3kr2yac8xnf3ktgcoqviaw115df6rra7is6p5uix OK 1 4 3 1 1 3 2 0 5 3 3 2 3 1 1 3 3 3
result:
wrong answer Edge between 1 and 3 appears more than once: appeared on positions 0 and 3
Subtask #3:
score: 0
Skipped
Dependency #2:
0%
Subtask #4:
score: 0
Wrong Answer
Test #82:
score: 0
Wrong Answer
time: 2ms
memory: 8840kb
input:
ba73dbf9c7d5e5202834d6a500541c 3 200000 2 200000 4 199998 2
output:
3kr2yac8xnf3ktgcoqviaw115df6rra7is6p5uix OK 0
result:
wrong answer Solution announced impossible, but it is possible.
Subtask #5:
score: 0
Wrong Answer
Test #108:
score: 0
Wrong Answer
time: 19ms
memory: 21108kb
input:
ba73dbf9c7d5e5202834d6a500541c 200000 82422 100002 100002 52498 82816 2 97624 2 100002 58032 20638 100002 100002 7646 80512 2 2 10584 28426 100002 2 83036 2 64556 47872 100002 55196 2 85350 100002 2 95376 2 23942 12488 100002 83178 2 2 9086 85598 2 100002 78820 100002 10868 98810 2 84182 100002 2 71...
output:
3kr2yac8xnf3ktgcoqviaw115df6rra7is6p5uix OK 0
result:
wrong answer Solution announced impossible, but it is possible.
Subtask #6:
score: 0
Skipped
Dependency #1:
100%
Accepted
Dependency #2:
0%