QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#560063#9238. Treeyyyyxh#0 0ms0kbC++231.3kb2024-09-12 11:49:522024-09-12 11:49:53

Judging History

你现在查看的是最新测评结果

  • [2024-09-12 11:49:53]
  • 评测
  • 测评结果:0
  • 用时:0ms
  • 内存:0kb
  • [2024-09-12 11:49:52]
  • 提交

answer

#include "tree.h"
#include <set>
#include <cstdio>
#include <algorithm>
using namespace std;
typedef long long ll;
typedef vector<int> vi;
const int N=200003;
const int INF=0x3f3f3f3f;
typedef pair<int,ll> pil;
int n,L,R;
vi vec[N];
set<pil> st[N];
vi w;ll res;
ll dfs(int u){
	if(vec[u].empty()){
		res+=(ll)L*w[u];
		st[u].emplace(INF,L);
		return L;
	}
	else{
		ll sm=0,all=0;
		for(int v:vec[u]){
			sm+=dfs(v);
			if(st[v].size()>st[u].size()) st[u].swap(st[v]);
			for(auto [x,c]:st[v]) st[u].emplace(x,c);
			st[v].clear();
		}
		while(!st[u].empty()){
			auto it=prev(st[u].end());
			if((it->first)>w[u]){
				all+=it->second;
				st[u].erase(it);
			}
			else break;
		}
		st[u].emplace(w[u],all);
		while(sm>R){
			auto it=st[u].begin();
			auto [x,c]=*it;
			st[u].erase(it);
			if(c>sm-R){
				c-=sm-R;sm=R;
				res+=(ll)(sm-R)*x;
				st[u].emplace(x,c);
			}
			else{
				sm-=c;
				res+=(ll)c*x;
			}
		}
		all=L;
		while(!st[u].empty()&&all){
			auto it=prev(st[u].end());
			auto [x,c]=*it;
			st[u].erase(it);
			if(all<c){
				c-=all;all=0;
				st[u].emplace(x,c);
			}
			else all-=c;
		}
		st[u].emplace(INF,L);
		return sm;
	}
}
void init(vi P,vi W){
	n=P.size();w=W;
	for(int i=1;i<n;++i) vec[P[i]].emplace_back(i);
}
ll query(int _L,int _R){
	L=_L;R=_R;res=0;dfs(0);
	return res;
}

Details

Tip: Click on the bar to expand more detailed information

Subtask #1:

score: 0
Time Limit Exceeded

Test #1:

score: 0
Time Limit Exceeded

input:

ZYKrr4gCMcKeyfk6kbZU5k4ZyW3sAGT0
200000
0 0 2 2 4 5 4 5 8 9 10 9 8 10 14 15 14 15 18 19 20 21 18 22 21 24 24 27 22 27 30 31 31 33 30 19 20 33 38 38 40 41 41 43 44 43 44 47 48 49 50 49 50 53 54 53 48 54 58 58 60 60 62 62 64 64 66 66 67 67 70 71 72 71 72 75 70 75 78 78 80 81 80 81 84 85 86 86 88 89 90...

output:


result:


Subtask #2:

score: 0
Time Limit Exceeded

Test #11:

score: 0
Time Limit Exceeded

input:

ZYKrr4gCMcKeyfk6kbZU5k4ZyW3sAGT0
2000
0 0 1 1 4 4 6 7 6 7 10 10 12 12 14 15 14 15 18 19 19 21 18 21 24 24 26 27 26 27 30 30 32 32 34 34 36 37 38 39 39 41 37 38 36 41 46 47 48 47 48 51 51 53 54 54 56 56 58 58 60 61 61 63 64 64 66 67 66 67 70 71 72 72 74 75 76 76 75 74 70 77 63 60 77 85 85 87 87 89 89...

output:


result:


Subtask #3:

score: 0
Skipped

Dependency #2:

0%

Subtask #4:

score: 0
Time Limit Exceeded

Test #33:

score: 0
Time Limit Exceeded

input:

ZYKrr4gCMcKeyfk6kbZU5k4ZyW3sAGT0
200000
0 1 0 1 2 2 6 6 7 7 10 11 11 13 14 13 14 17 10 17 20 21 22 22 23 21 20 23 28 29 28 29 32 33 34 32 33 34 38 39 39 40 42 42 44 45 46 47 48 45 46 48 52 53 53 54 56 56 58 58 60 61 62 63 63 65 61 66 62 66 70 71 71 72 72 75 60 65 75 79 52 44 70 47 40 54 79 87 87 89 ...

output:


result:


Subtask #5:

score: 0
Skipped

Dependency #4:

0%

Subtask #6:

score: 0
Time Limit Exceeded

Test #47:

score: 0
Time Limit Exceeded

input:

ZYKrr4gCMcKeyfk6kbZU5k4ZyW3sAGT0
200000
0 1 0 1 4 5 5 7 7 9 9 11 12 13 13 11 14 12 14 19 20 19 20 23 24 25 26 26 28 28 30 31 32 33 33 35 35 30 32 31 37 41 42 43 24 44 46 46 48 49 50 51 51 53 54 55 55 56 56 48 50 54 44 59 49 25 59 67 68 67 68 71 71 72 72 75 76 76 78 79 80 37 80 83 83 85 86 85 79 41 8...

output:


result:


Subtask #7:

score: 0
Skipped

Dependency #1:

0%