제출 #1178166

#제출 시각아이디문제언어결과실행 시간메모리
1178166alexander707070트리 (IOI24_tree)C++20
7 / 100
58 ms21924 KiB
#include<bits/stdc++.h> #define MAXN 200007 using namespace std; int n; long long leaves[MAXN]; vector<int> v[MAXN]; long long cost[MAXN],ans; long long L,R,sum[MAXN],dp[MAXN]; void dfs(int x){ if(v[x].empty())leaves[x]=1; for(int i:v[x]){ dfs(i); leaves[x]+=leaves[i]; } } 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); } dfs(1); sort(leaves+1,leaves+n+1); } long long query(int lt, int rt){ L=lt; R=rt; if(leaves[n]*L<=R)return leaves[n]*L; return 2*leaves[n]*L-R; /*ans=0; solve(1); return ans;*/ } /*int main(){ init({-1, 0, 0}, {1, 1, 1}); cout<<query(1,1)<<"\n"; 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...