QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#387835#667. Randomized Binary Search TreeD_F_SWA 2ms10416kbC++14744b2024-04-12 21:37:072024-04-12 21:37:07

Judging History

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

  • [2024-04-12 21:37:07]
  • 评测
  • 测评结果:WA
  • 用时:2ms
  • 内存:10416kb
  • [2024-04-12 21:37:07]
  • 提交

answer

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=1e5+5;
int n,a[N],fa[N],d[N]; ll an,b[N]; queue<int> q; multiset<ll> s[N];
int main()
{
	scanf("%d%d",&n,&a[1]);
	for(int i=2;i<=n;++i) scanf("%d%d",&fa[i],&a[i]), ++d[fa[i]];
	for(int i=1;i<=n;++i) !d[i]&&(q.push(i),0); while(!q.empty())
	{
		int u=q.front(),f=fa[u]; q.pop(); !(--d[f])&&(q.push(f),0);
		if(s[u].empty()) s[u].insert(0-b[u]);
		else
		{
			s[u].insert(0-b[u]); s[u].insert(0-b[u]);
			an+=b[u]+*--s[u].end(); s[u].erase(--s[u].end());
		}
		if(u==1) break; b[u]+=a[u]-a[fa[u]]+1;
		s[u].size()>s[f].size()&&(swap(s[u],s[f]),swap(b[u],b[f]),0);
		for(int v:s[u]) s[f].insert(v+b[u]-b[f]);
	}
	printf("%lld\n",an); return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 0
Wrong Answer
time: 2ms
memory: 10416kb

input:

1

output:

0

result:

wrong answer 1st numbers differ - expected: '1.00000', found: '0.00000', error = '1.00000'