捞站外题,样例2标准14输出15
  • 板块学术版
  • 楼主Esawkm
  • 当前回复0
  • 已保存回复0
  • 发布时间2022/12/4 21:42
  • 上次更新2023/10/27 00:27:07
查看原帖
捞站外题,样例2标准14输出15
642481
Esawkm楼主2022/12/4 21:42

RT

代码

#include<bits/stdc++.h>
#define int long long
using namespace std;
int n;
struct jjj{
	int a,f,z,id,in;
}ak[1000005];
bool cmp(jjj qq,jjj ss){
	return qq.a<ss.a;
}
signed main(){
	scanf("%lld",&n);
	for(int i(1);i<=n;i++)
	scanf("%lld",&ak[i].a),ak[i].id=i;
	for(int i(1);i<n;i++)
	scanf("%lld%lld",&ak[i].f,&ak[i].z),ak[ak[i].f].in++,ak[ak[i].z].in++;
	sort(ak+1,ak+n+1,cmp);
	int k1=ak[(1+n)/2].a,k2=ak[(1+n)/2+1].a;
	long long ans1=0,ans2=0;
	for(int i(1);i<=n;i++)
	ans1+=ak[ak[i].id].in*abs(ak[i].a-k1);
	for(int i(1);i<=n;i++)
	ans2+=ak[ak[i].id].in*abs(ak[i].a-k2);
	if(n&1)
	cout<<ans1;
	else
	cout<<min(ans1,ans2);
	return 0;
}
2022/12/4 21:42
加载中...