제출 #1178154

#제출 시각아이디문제언어결과실행 시간메모리
1178154alexander707070Tree (IOI24_tree)C++20
10 / 100
2094 ms20896 KiB
#include<bits/stdc++.h> #define MAXN 200007 using namespace std; int n; vector<int> v[MAXN]; long long cost[MAXN],ans; long long L,R,sum[MAXN],dp[MAXN]; void init(vector<int> P, vector<int> W){ n=int(P.size()); for(int i=1;i<=n;i++)cost[i]=W[i-1]; for(int i=1;i<P.size();i++){ v[P[i]+1].push_back(i+1); } } void solve(int x){ sum[x]=0; for(int i:v[x]){ solve(i); sum[x]+=sum[i]; } if(sum[x]>R){ ans+=cost[x]*(sum[x]-R); sum[x]=R; } if(sum[x]<L){ ans+=cost[x]*(L-sum[x]); sum[x]=L; } } long long query(int l, int r){ L=l; R=r; ans=0; solve(1); return ans; } /*int main(){ init({-1, 0, 0}, {1, 1, 1}); cout<<query(1,2)<<"\n"; return 0; }*/
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...