#include<bits/stdc++.h>
using namespace std;
#define all(fl) fl.begin(),fl.end()
#define pb push_back
#define fi first
#define se second
#define for1(i,j,k) for(int i=j;i<=k;i++)
#define for2(i,j,k) for(int i=j;i>=k;i--)
#define for3(i,j,k,l) for(int i=j;i<=k;i+=l)
#define lb lower_bound
#define ub upper_bound
#define sz(a) (int)a.size()
#define pii pair<int,int>
#define pli pair<long long,int>
#define gcd __gcd
#define lcm(x,y) x*y/__gcd(x,y)
const int maxn=4e5+9;
int f[maxn];
int fs(int u){
if (f[u]<0)return u;
return f[u]=fs(f[u]);
}
map<int,int>ns;
int unite(int u,int v,int w){
u=ns[u],v=ns[v];
u=fs(u),v=fs(v);
if (u==v)return 0;
if (f[u]>f[v])swap(u,v);
f[u]+=f[v];
f[v]=u;
return w;
}
int a[maxn];//i to i+1
void add(int u,int v){
u=ns[u],v=ns[v];
if (u>v){
a[v]--;
a[u]++;
}
else {
a[u]++;
a[v]--;
}
}
const int inf=1e9;
struct edg{
int u,v,w;
};
/*
voi 1 dap an thoa man thi ta se noi dinh cuoi them voi dinh s=1e9 t=1 cost se khong doi
nhan xet la neu ta dung do thi voi s->t thi xet i->i+1 thi so lan i->i+1 = so lan i+1->i vi neu khong se khong the tu 1 quay ve 1 duoc
thi ta nhan xet ta co the dung them so canh i->i+1 tuy y vi no tuong duong voi van toc hien tai dang <= s tiep theo thi ta tang no ngang=s cung duoc
con voi moi 1 canh i+1->i thi se +1 vao dap an vi no tuong duong duong ray giam toc do
neu do thi da thoa man dieu kien tren ma van chua lien thong thi ta co the add them 1 canh i->j va j->i voi i j thuoc 2 tplt khac nhau cost la abs(j-i)
tu day bai toan thanh tim mst cho do thi
*/
long long plan_roller_coaster(std::vector<int> s, std::vector<int> t) {
int n = (int) s.size();
vector<int>b;
b.pb(1),b.pb(inf);
for1(i,0,n-1){
b.pb(s[i]);
b.pb(t[i]);
}
sort(all(b));
b.resize(distance(b.begin(),unique(all(b))));
for1(i,0,sz(b)-1)ns[b[i]]=i+1;
int m=sz(b);
for1(i,1,m)f[i]=-1;
unite(1,inf,0);
add(inf,1);
for1(i,0,n-1){
add(s[i],t[i]);
unite(s[i],t[i],0);
}
for1(i,1,m)a[i]+=a[i-1];
long long ans=0;
for1(i,1,m-1){
if (a[i]>0){
ans+=1ll*a[i]*(b[i]-b[i-1]);
}
if (a[i]!=0){
unite(b[i-1],b[i],0);
}
}
vector<edg>temp;
for1(i,1,m-1){
temp.pb({b[i-1],b[i],b[i]-b[i-1]});
}
sort(all(temp),[](const edg p,const edg q){
return p.w<q.w;
});
for(auto v:temp){
ans+=unite(v.u,v.v,v.w);
}
return ans;
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
2396 KB |
n = 2 |
2 |
Correct |
1 ms |
2648 KB |
n = 2 |
3 |
Correct |
1 ms |
2392 KB |
n = 2 |
4 |
Correct |
1 ms |
2392 KB |
n = 2 |
5 |
Correct |
1 ms |
2396 KB |
n = 2 |
6 |
Correct |
1 ms |
2392 KB |
n = 2 |
7 |
Correct |
1 ms |
2396 KB |
n = 3 |
8 |
Correct |
1 ms |
2396 KB |
n = 3 |
9 |
Correct |
1 ms |
2396 KB |
n = 3 |
10 |
Correct |
1 ms |
2396 KB |
n = 8 |
11 |
Correct |
1 ms |
2396 KB |
n = 8 |
12 |
Correct |
1 ms |
2396 KB |
n = 8 |
13 |
Correct |
1 ms |
2392 KB |
n = 8 |
14 |
Correct |
1 ms |
2396 KB |
n = 8 |
15 |
Correct |
1 ms |
2396 KB |
n = 8 |
16 |
Correct |
1 ms |
2396 KB |
n = 8 |
17 |
Correct |
1 ms |
2396 KB |
n = 8 |
18 |
Correct |
1 ms |
2392 KB |
n = 8 |
19 |
Correct |
1 ms |
2396 KB |
n = 3 |
20 |
Correct |
1 ms |
2396 KB |
n = 7 |
21 |
Correct |
1 ms |
2396 KB |
n = 8 |
22 |
Correct |
1 ms |
2396 KB |
n = 8 |
23 |
Correct |
1 ms |
2648 KB |
n = 8 |
24 |
Correct |
1 ms |
2392 KB |
n = 8 |
25 |
Correct |
1 ms |
2392 KB |
n = 8 |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
2396 KB |
n = 2 |
2 |
Correct |
1 ms |
2648 KB |
n = 2 |
3 |
Correct |
1 ms |
2392 KB |
n = 2 |
4 |
Correct |
1 ms |
2392 KB |
n = 2 |
5 |
Correct |
1 ms |
2396 KB |
n = 2 |
6 |
Correct |
1 ms |
2392 KB |
n = 2 |
7 |
Correct |
1 ms |
2396 KB |
n = 3 |
8 |
Correct |
1 ms |
2396 KB |
n = 3 |
9 |
Correct |
1 ms |
2396 KB |
n = 3 |
10 |
Correct |
1 ms |
2396 KB |
n = 8 |
11 |
Correct |
1 ms |
2396 KB |
n = 8 |
12 |
Correct |
1 ms |
2396 KB |
n = 8 |
13 |
Correct |
1 ms |
2392 KB |
n = 8 |
14 |
Correct |
1 ms |
2396 KB |
n = 8 |
15 |
Correct |
1 ms |
2396 KB |
n = 8 |
16 |
Correct |
1 ms |
2396 KB |
n = 8 |
17 |
Correct |
1 ms |
2396 KB |
n = 8 |
18 |
Correct |
1 ms |
2392 KB |
n = 8 |
19 |
Correct |
1 ms |
2396 KB |
n = 3 |
20 |
Correct |
1 ms |
2396 KB |
n = 7 |
21 |
Correct |
1 ms |
2396 KB |
n = 8 |
22 |
Correct |
1 ms |
2396 KB |
n = 8 |
23 |
Correct |
1 ms |
2648 KB |
n = 8 |
24 |
Correct |
1 ms |
2392 KB |
n = 8 |
25 |
Correct |
1 ms |
2392 KB |
n = 8 |
26 |
Correct |
1 ms |
2392 KB |
n = 8 |
27 |
Correct |
1 ms |
2392 KB |
n = 8 |
28 |
Correct |
1 ms |
2396 KB |
n = 8 |
29 |
Correct |
1 ms |
2396 KB |
n = 16 |
30 |
Correct |
1 ms |
2392 KB |
n = 16 |
31 |
Correct |
1 ms |
2396 KB |
n = 16 |
32 |
Correct |
1 ms |
2396 KB |
n = 16 |
33 |
Correct |
1 ms |
2396 KB |
n = 16 |
34 |
Correct |
1 ms |
2396 KB |
n = 16 |
35 |
Correct |
1 ms |
2396 KB |
n = 16 |
36 |
Correct |
1 ms |
2396 KB |
n = 15 |
37 |
Correct |
1 ms |
2396 KB |
n = 8 |
38 |
Correct |
1 ms |
2396 KB |
n = 16 |
39 |
Correct |
1 ms |
2396 KB |
n = 16 |
40 |
Correct |
1 ms |
2396 KB |
n = 9 |
41 |
Correct |
1 ms |
2396 KB |
n = 16 |
42 |
Correct |
1 ms |
2396 KB |
n = 16 |
43 |
Correct |
1 ms |
2396 KB |
n = 16 |
44 |
Correct |
1 ms |
2396 KB |
n = 9 |
45 |
Correct |
1 ms |
2396 KB |
n = 15 |
46 |
Correct |
1 ms |
2396 KB |
n = 16 |
47 |
Correct |
1 ms |
2392 KB |
n = 16 |
48 |
Correct |
1 ms |
2396 KB |
n = 16 |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
767 ms |
38820 KB |
n = 199999 |
2 |
Correct |
791 ms |
38060 KB |
n = 199991 |
3 |
Correct |
761 ms |
38568 KB |
n = 199993 |
4 |
Correct |
465 ms |
31032 KB |
n = 152076 |
5 |
Correct |
279 ms |
20092 KB |
n = 93249 |
6 |
Correct |
485 ms |
34532 KB |
n = 199910 |
7 |
Correct |
607 ms |
38020 KB |
n = 199999 |
8 |
Correct |
470 ms |
33980 KB |
n = 199997 |
9 |
Correct |
608 ms |
33968 KB |
n = 171294 |
10 |
Correct |
453 ms |
30912 KB |
n = 140872 |
11 |
Correct |
459 ms |
34380 KB |
n = 199886 |
12 |
Correct |
676 ms |
38592 KB |
n = 199996 |
13 |
Correct |
476 ms |
36020 KB |
n = 200000 |
14 |
Correct |
545 ms |
36796 KB |
n = 199998 |
15 |
Correct |
537 ms |
37824 KB |
n = 200000 |
16 |
Correct |
624 ms |
37972 KB |
n = 199998 |
17 |
Correct |
702 ms |
38076 KB |
n = 200000 |
18 |
Correct |
636 ms |
37320 KB |
n = 190000 |
19 |
Correct |
592 ms |
36816 KB |
n = 177777 |
20 |
Correct |
280 ms |
20164 KB |
n = 100000 |
21 |
Correct |
714 ms |
39096 KB |
n = 200000 |
22 |
Correct |
582 ms |
38808 KB |
n = 200000 |
23 |
Correct |
651 ms |
39336 KB |
n = 200000 |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
2396 KB |
n = 2 |
2 |
Correct |
1 ms |
2648 KB |
n = 2 |
3 |
Correct |
1 ms |
2392 KB |
n = 2 |
4 |
Correct |
1 ms |
2392 KB |
n = 2 |
5 |
Correct |
1 ms |
2396 KB |
n = 2 |
6 |
Correct |
1 ms |
2392 KB |
n = 2 |
7 |
Correct |
1 ms |
2396 KB |
n = 3 |
8 |
Correct |
1 ms |
2396 KB |
n = 3 |
9 |
Correct |
1 ms |
2396 KB |
n = 3 |
10 |
Correct |
1 ms |
2396 KB |
n = 8 |
11 |
Correct |
1 ms |
2396 KB |
n = 8 |
12 |
Correct |
1 ms |
2396 KB |
n = 8 |
13 |
Correct |
1 ms |
2392 KB |
n = 8 |
14 |
Correct |
1 ms |
2396 KB |
n = 8 |
15 |
Correct |
1 ms |
2396 KB |
n = 8 |
16 |
Correct |
1 ms |
2396 KB |
n = 8 |
17 |
Correct |
1 ms |
2396 KB |
n = 8 |
18 |
Correct |
1 ms |
2392 KB |
n = 8 |
19 |
Correct |
1 ms |
2396 KB |
n = 3 |
20 |
Correct |
1 ms |
2396 KB |
n = 7 |
21 |
Correct |
1 ms |
2396 KB |
n = 8 |
22 |
Correct |
1 ms |
2396 KB |
n = 8 |
23 |
Correct |
1 ms |
2648 KB |
n = 8 |
24 |
Correct |
1 ms |
2392 KB |
n = 8 |
25 |
Correct |
1 ms |
2392 KB |
n = 8 |
26 |
Correct |
1 ms |
2392 KB |
n = 8 |
27 |
Correct |
1 ms |
2392 KB |
n = 8 |
28 |
Correct |
1 ms |
2396 KB |
n = 8 |
29 |
Correct |
1 ms |
2396 KB |
n = 16 |
30 |
Correct |
1 ms |
2392 KB |
n = 16 |
31 |
Correct |
1 ms |
2396 KB |
n = 16 |
32 |
Correct |
1 ms |
2396 KB |
n = 16 |
33 |
Correct |
1 ms |
2396 KB |
n = 16 |
34 |
Correct |
1 ms |
2396 KB |
n = 16 |
35 |
Correct |
1 ms |
2396 KB |
n = 16 |
36 |
Correct |
1 ms |
2396 KB |
n = 15 |
37 |
Correct |
1 ms |
2396 KB |
n = 8 |
38 |
Correct |
1 ms |
2396 KB |
n = 16 |
39 |
Correct |
1 ms |
2396 KB |
n = 16 |
40 |
Correct |
1 ms |
2396 KB |
n = 9 |
41 |
Correct |
1 ms |
2396 KB |
n = 16 |
42 |
Correct |
1 ms |
2396 KB |
n = 16 |
43 |
Correct |
1 ms |
2396 KB |
n = 16 |
44 |
Correct |
1 ms |
2396 KB |
n = 9 |
45 |
Correct |
1 ms |
2396 KB |
n = 15 |
46 |
Correct |
1 ms |
2396 KB |
n = 16 |
47 |
Correct |
1 ms |
2392 KB |
n = 16 |
48 |
Correct |
1 ms |
2396 KB |
n = 16 |
49 |
Correct |
767 ms |
38820 KB |
n = 199999 |
50 |
Correct |
791 ms |
38060 KB |
n = 199991 |
51 |
Correct |
761 ms |
38568 KB |
n = 199993 |
52 |
Correct |
465 ms |
31032 KB |
n = 152076 |
53 |
Correct |
279 ms |
20092 KB |
n = 93249 |
54 |
Correct |
485 ms |
34532 KB |
n = 199910 |
55 |
Correct |
607 ms |
38020 KB |
n = 199999 |
56 |
Correct |
470 ms |
33980 KB |
n = 199997 |
57 |
Correct |
608 ms |
33968 KB |
n = 171294 |
58 |
Correct |
453 ms |
30912 KB |
n = 140872 |
59 |
Correct |
459 ms |
34380 KB |
n = 199886 |
60 |
Correct |
676 ms |
38592 KB |
n = 199996 |
61 |
Correct |
476 ms |
36020 KB |
n = 200000 |
62 |
Correct |
545 ms |
36796 KB |
n = 199998 |
63 |
Correct |
537 ms |
37824 KB |
n = 200000 |
64 |
Correct |
624 ms |
37972 KB |
n = 199998 |
65 |
Correct |
702 ms |
38076 KB |
n = 200000 |
66 |
Correct |
636 ms |
37320 KB |
n = 190000 |
67 |
Correct |
592 ms |
36816 KB |
n = 177777 |
68 |
Correct |
280 ms |
20164 KB |
n = 100000 |
69 |
Correct |
714 ms |
39096 KB |
n = 200000 |
70 |
Correct |
582 ms |
38808 KB |
n = 200000 |
71 |
Correct |
651 ms |
39336 KB |
n = 200000 |
72 |
Correct |
753 ms |
39792 KB |
n = 200000 |
73 |
Correct |
694 ms |
39336 KB |
n = 200000 |
74 |
Correct |
775 ms |
40084 KB |
n = 200000 |
75 |
Correct |
797 ms |
39868 KB |
n = 200000 |
76 |
Correct |
821 ms |
38848 KB |
n = 200000 |
77 |
Correct |
368 ms |
24776 KB |
n = 200000 |
78 |
Correct |
344 ms |
26052 KB |
n = 200000 |
79 |
Correct |
626 ms |
37612 KB |
n = 184307 |
80 |
Correct |
192 ms |
17916 KB |
n = 76040 |
81 |
Correct |
473 ms |
34496 KB |
n = 199981 |
82 |
Correct |
626 ms |
38208 KB |
n = 199994 |
83 |
Correct |
526 ms |
34776 KB |
n = 199996 |
84 |
Correct |
577 ms |
37636 KB |
n = 199998 |
85 |
Correct |
575 ms |
37824 KB |
n = 200000 |
86 |
Correct |
617 ms |
37952 KB |
n = 199998 |
87 |
Correct |
747 ms |
39740 KB |
n = 200000 |
88 |
Correct |
751 ms |
38848 KB |
n = 200000 |
89 |
Correct |
801 ms |
37056 KB |
n = 200000 |
90 |
Correct |
706 ms |
38592 KB |
n = 200000 |
91 |
Correct |
636 ms |
38552 KB |
n = 200000 |
92 |
Correct |
644 ms |
37568 KB |
n = 200000 |