QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#867648 | #3275. 小明的树 | oXUo | 100 ✓ | 1329ms | 55900kb | C++14 | 2.4kb | 2025-01-23 20:57:53 | 2025-01-23 20:57:53 |
Judging History
answer
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define pii pair<int,ll>
#define fi first
#define in inline
#define se second
#define mp make_pair
#define pb push_back
#define db double
mt19937 rd(std::chrono::steady_clock::now().time_since_epoch().count());
const int N = 5e5+10;
const ll inf = 1e18,mod = 998244353;
ll read(){
ll x = 0,f = 1;char c = getchar();
for(;c < '0' || c > '9';c = getchar())if(c == '-')f = -1;
for(;c >= '0' && c <= '9';c = getchar())x = (x<<1) + (x<<3) + c-'0';
return x * f;
}
void cmax(ll &x,ll y){x = max(x,y);}
void cmin(ll &x,ll y){x = min(x,y);}
int n,m;
int a[N],x[N],y[N],t[N];
struct segment{
#define mid (l + r >> 1)
struct tag{
ll add,adds;
tag operator + (const tag x)const{return {add + x.add,adds + x.adds};}
}t[N<<2];
struct dat{
ll mi,cn,sum;
dat operator + (const dat x)const{
if(mi < x.mi)return {mi,cn,sum};
if(mi > x.mi)return x;
return {mi,cn + x.cn,sum + x.sum};
}
dat operator + (const tag x)const{return {mi + x.add,cn,sum + cn * x.adds};}
}s[N<<2];
void pushup(int p){s[p] = s[p<<1] + s[p<<1|1];}
void update(int p,tag k){s[p] = s[p] + k,t[p] = t[p] + k;}
void pushdown(int p){
update(p<<1,t[p]),update(p<<1|1,t[p]);
t[p] = {0,0};
}
void build(int p,int l,int r){
if(l == r)return s[p] = {n - l,1,l},void();
build(p<<1,l,mid),build(p<<1|1,mid+1,r);
pushup(p);
}
void modify(int p,int l,int r,int L,int R,tag k){
if(L > R)return;
if(L <= l && r <= R)return update(p,k),void();
pushdown(p);
if(L <= mid)modify(p<<1,l,mid,L,R,k);
if(R > mid)modify(p<<1|1,mid+1,r,L,R,k);
pushup(p);
}
ll ask(int p,int l,int r,int L,int R){
if(L <= l && r <= R)return (s[p].mi == 1) * s[p].sum;
if(L > r || R < l)return 0;
pushdown(p);
return ask(p<<1,l,mid,L,R) + ask(p<<1|1,mid+1,r,L,R);
}
}tr;
void add(int x,int y,int val){
tr.modify(1,1,n - 1,1,min(t[x],t[y]) - 1,{val,0});
tr.modify(1,1,n - 1,max(t[x],t[y]),n - 1,{0,val});
}
int main(){
n = read(),m = read();
for(int i = 1;i < n;i++)x[i] = read(),y[i] = read();
t[1] = n;
for(int i = 1;i < n;i++)a[i] = read(),t[a[i]] = i;
tr.build(1,1,n - 1);
for(int i = 1;i < n;i++)add(x[i],y[i],-1);
printf("%lld\n",tr.ask(1,1,n - 1,1,n - 1));
for(int i = 1;i <= m;i++){
int x = read(),y = read();
add(x,y,1);
x = read(),y = read();
add(x,y,-1);
printf("%lld\n",tr.ask(1,1,n - 1,1,n - 1));
}
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Subtask #1:
score: 10
Accepted
Test #1:
score: 10
Accepted
time: 409ms
memory: 54772kb
input:
500000 0 2 1 3 2 4 2 5 4 6 1 7 1 8 4 9 3 10 9 11 3 12 8 13 5 14 7 15 10 16 10 17 13 18 14 19 18 20 14 21 13 22 3 23 2 24 2 25 10 26 19 27 13 28 16 29 7 30 11 31 13 32 28 33 30 34 10 35 26 36 5 37 34 38 20 39 7 40 35 41 30 42 11 43 40 44 10 45 5 46 23 47 15 48 23 49 16 50 5 51 13 52 23 53 47 54 3 55 ...
output:
237
result:
ok 1 number(s): "237"
Subtask #2:
score: 20
Accepted
Test #2:
score: 20
Accepted
time: 11ms
memory: 14416kb
input:
8000 8000 2 1 3 2 4 1 5 4 6 3 7 4 8 3 9 3 10 8 11 6 12 7 13 11 14 11 15 7 16 4 17 11 18 7 19 8 20 19 21 18 22 17 23 2 24 15 25 23 26 13 27 10 28 1 29 7 30 17 31 11 32 18 33 2 34 1 35 29 36 5 37 21 38 6 39 7 40 26 41 19 42 3 43 9 44 39 45 23 46 41 47 38 48 12 49 4 50 30 51 1 52 41 53 17 54 41 55 53 5...
output:
16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 ...
result:
ok 8001 numbers
Test #3:
score: 20
Accepted
time: 9ms
memory: 16344kb
input:
8000 8000 2 1 3 2 4 3 5 1 6 1 7 2 8 6 9 7 10 5 11 8 12 1 13 3 14 9 15 7 16 11 17 15 18 17 19 16 20 8 21 9 22 16 23 8 24 17 25 23 26 11 27 22 28 16 29 11 30 14 31 27 32 23 33 24 34 7 35 26 36 10 37 35 38 7 39 21 40 7 41 11 42 32 43 11 44 17 45 9 46 4 47 5 48 24 49 25 50 15 51 32 52 41 53 28 54 34 55 ...
output:
12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 ...
result:
ok 8001 numbers
Subtask #3:
score: 70
Accepted
Dependency #1:
100%
Accepted
Dependency #2:
100%
Accepted
Test #4:
score: 70
Accepted
time: 1325ms
memory: 55900kb
input:
500000 500000 2 1 3 2 4 1 5 2 6 1 7 6 8 7 9 1 10 7 11 8 12 11 13 6 14 4 15 4 16 6 17 9 18 8 19 14 20 11 21 15 22 9 23 11 24 16 25 6 26 19 27 15 28 7 29 10 30 18 31 5 32 30 33 27 34 15 35 22 36 23 37 13 38 21 39 12 40 12 41 38 42 8 43 42 44 37 45 43 46 17 47 14 48 41 49 20 50 20 51 44 52 39 53 23 54 ...
output:
262 262 262 262 262 262 262 262 262 262 262 262 262 262 262 262 262 262 262 262 262 262 262 262 262 262 262 262 262 262 262 262 262 262 262 262 262 262 262 262 262 262 262 262 262 262 262 262 262 262 262 262 262 262 262 262 262 262 262 262 262 262 262 262 262 262 262 262 262 262 262 262 262 262 262 ...
result:
ok 500001 numbers
Test #5:
score: 70
Accepted
time: 1311ms
memory: 54624kb
input:
500000 500000 2 1 3 1 4 2 5 3 6 2 7 3 8 1 9 3 10 2 11 8 12 6 13 8 14 7 15 12 16 8 17 11 18 10 19 12 20 12 21 7 22 6 23 16 24 1 25 21 26 13 27 8 28 19 29 3 30 26 31 27 32 21 33 21 34 23 35 16 36 28 37 31 38 3 39 17 40 9 41 8 42 37 43 15 44 40 45 8 46 44 47 31 48 46 49 27 50 17 51 9 52 13 53 29 54 6 5...
output:
415 415 415 415 415 415 415 415 415 415 415 415 415 415 415 415 415 415 415 415 415 415 415 415 415 415 415 415 415 415 415 415 415 415 415 415 415 415 415 415 415 415 415 415 415 415 415 415 415 415 415 415 415 415 415 415 415 415 415 415 415 415 415 415 415 415 415 415 415 415 415 415 415 415 415 ...
result:
ok 500001 numbers
Test #6:
score: 70
Accepted
time: 1318ms
memory: 55416kb
input:
500000 500000 2 1 3 2 4 1 5 4 6 3 7 1 8 5 9 6 10 7 11 5 12 5 13 12 14 2 15 6 16 15 17 9 18 17 19 17 20 5 21 9 22 19 23 5 24 15 25 11 26 4 27 11 28 19 29 28 30 5 31 30 32 21 33 10 34 8 35 3 36 14 37 10 38 26 39 12 40 1 41 27 42 34 43 20 44 14 45 33 46 3 47 19 48 45 49 35 50 32 51 1 52 42 53 9 54 7 55...
output:
57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 ...
result:
ok 500001 numbers
Test #7:
score: 70
Accepted
time: 1317ms
memory: 54808kb
input:
500000 500000 2 1 3 2 4 3 5 1 6 5 7 6 8 3 9 6 10 8 11 2 12 4 13 4 14 9 15 10 16 5 17 10 18 11 19 8 20 18 21 18 22 5 23 4 24 7 25 10 26 21 27 25 28 8 29 2 30 20 31 28 32 16 33 32 34 20 35 34 36 3 37 9 38 25 39 21 40 35 41 13 42 20 43 3 44 34 45 2 46 17 47 8 48 12 49 17 50 17 51 49 52 15 53 48 54 27 5...
output:
198 198 198 198 198 198 198 198 198 198 198 198 198 198 198 198 198 198 198 198 198 198 198 198 198 198 198 198 198 198 198 198 198 198 198 198 198 198 198 198 198 198 198 198 198 198 198 198 198 198 198 198 198 198 198 198 198 198 198 198 198 198 198 198 198 198 198 198 198 198 198 198 198 198 198 ...
result:
ok 500001 numbers
Test #8:
score: 70
Accepted
time: 1329ms
memory: 55144kb
input:
500000 500000 2 1 3 2 4 2 5 2 6 3 7 2 8 2 9 4 10 1 11 2 12 10 13 6 14 8 15 5 16 13 17 7 18 1 19 16 20 7 21 9 22 15 23 20 24 6 25 2 26 10 27 6 28 2 29 27 30 6 31 24 32 2 33 4 34 5 35 4 36 31 37 5 38 5 39 17 40 19 41 30 42 40 43 2 44 14 45 25 46 37 47 6 48 46 49 19 50 33 51 11 52 1 53 27 54 7 55 47 56...
output:
290 290 290 290 290 290 290 290 290 290 290 290 290 290 290 290 290 290 290 290 290 290 290 290 290 290 290 290 290 290 290 290 290 290 290 290 290 290 290 290 290 290 290 290 290 290 290 290 290 290 290 290 290 290 290 290 290 290 290 290 290 290 290 290 290 290 290 290 290 290 290 290 290 290 290 ...
result:
ok 500001 numbers
Test #9:
score: 70
Accepted
time: 1310ms
memory: 55864kb
input:
500000 500000 2 1 3 1 4 2 5 1 6 5 7 5 8 1 9 8 10 5 11 8 12 4 13 9 14 11 15 10 16 11 17 7 18 17 19 12 20 17 21 9 22 9 23 8 24 21 25 17 26 13 27 5 28 10 29 18 30 4 31 19 32 6 33 18 34 10 35 12 36 19 37 13 38 5 39 10 40 33 41 16 42 18 43 20 44 26 45 19 46 1 47 15 48 17 49 48 50 43 51 40 52 29 53 45 54 ...
output:
40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 ...
result:
ok 500001 numbers
Test #10:
score: 70
Accepted
time: 1305ms
memory: 55240kb
input:
500000 500000 2 1 3 2 4 2 5 4 6 2 7 1 8 1 9 5 10 9 11 3 12 3 13 1 14 9 15 6 16 8 17 3 18 9 19 5 20 5 21 5 22 15 23 15 24 7 25 7 26 9 27 26 28 9 29 1 30 28 31 2 32 20 33 28 34 26 35 16 36 7 37 29 38 33 39 13 40 34 41 35 42 27 43 24 44 10 45 12 46 19 47 11 48 38 49 12 50 18 51 19 52 23 53 6 54 33 55 1...
output:
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ...
result:
ok 500001 numbers