题目链接

题意:给你一棵树,让你找一个顶点iii,使得这个点的∑dis(i,j)∗a[j]\sum dis(i,j)*a[j]∑dis(i,j)∗a[j]最大。dis(i,j)dis(i,j)dis(i,j)为iii到jjj的距离。

思路:题解还是好看啊 先从1开始搜,预处理出当1为根的时候的答案记为resresres,递归的过程中假设当前节点为iii,那么sum[i]sum[i]sum[i]数组的意义就是:从以当前顶点为根的所有子树的所有节点的权值和记为sum[i]sum[i]sum[i]。

预处理完成之后就是题解中神奇的re-rooting(换根)。 还是从1开始递归,假设当前根为vvv,他的一个子节点为tototo,那么v−>tov->tov−>to就是一个换根过程,需要做一下转变,类似于莫队的转移 ,首先由于根的变化,之前v到nownownow的某个子节点的距离是x+1x+1x+1的话,那么nownownow为根的时候这个距离就是xxx了。resresres就要减去sum[k],sum[v]sum[k],sum[v]sum[k],sum[v]也要减去sum[k]sum[k]sum[k],相应当,to经过nowto经过nowto经过now才能到的节点的到根的距离就要加1,res就要加上sum[v],sum[k]也要加上sum[v]res就要加上sum[v],sum[k]也要加上sum[v]res就要加上sum[v],sum[k]也要加上sum[v],然后记得回溯就行了。

#include<bits/stdc++.h>

#define LL long long
#define fi first
#define se second
#define mp make_pair
#define pb push_back using namespace std; LL gcd(LL a,LL b){return b?gcd(b,a%b):a;}
LL lcm(LL a,LL b){return a/gcd(a,b)*b;}
LL powmod(LL a,LL b,LL MOD){LL ans=1;while(b){if(b%2)ans=ans*a%MOD;a=a*a%MOD;b/=2;}return ans;} const int N =2e5+232;
int n,a[N];
vector<int>v[N];
LL sum[N],res,ans;
void dfs1(int now,int pre=-1,int h=0){
LL ans=0;
res+=1ll*h*a[now];
sum[now]=a[now];
for(auto k:v[now]){
if(k==pre)continue;
dfs1(k,now,h+1);
sum[now]+=sum[k];
}
}
void dfs2(int now,int p=-1){
ans=max(ans,res);
for(auto k:v[now]){
if(k==p)continue;
res-=sum[k];
sum[now]-=sum[k];
res+=sum[now];
sum[k]+=sum[now];
dfs2(k,now);
sum[k]-=sum[now];
res-=sum[now];
sum[now]+=sum[k];
res+=sum[k];
}
}
int main(){
ios::sync_with_stdio(false);
cin>>n;
for(int i=1;i<=n;i++)cin>>a[i];
for(int i=1;i<n;i++){
int s,t;
cin>>s>>t;
v[s].pb(t);
v[t].pb(s);
}
dfs1(1);
dfs2(1);
cout<<ans;
return 0;
}

Codeforces Round #527 (Div. 3) . F Tree with Maximum Cost的更多相关文章

  1. Codeforces Round #527 (Div. 3) F. Tree with Maximum Cost 【DFS换根 || 树形dp】

    传送门:http://codeforces.com/contest/1092/problem/F F. Tree with Maximum Cost time limit per test 2 sec ...

  2. Codeforces Round #499 (Div. 1) F. Tree

    Codeforces Round #499 (Div. 1) F. Tree 题目链接 \(\rm CodeForces\):https://codeforces.com/contest/1010/p ...

  3. Codeforces Round #527 (Div. 3)F(DFS,DP)

    #include<bits/stdc++.h>using namespace std;const int N=200005;int n,A[N];long long Mx,tot,S[N] ...

  4. Codeforces Round #527 (Div. 3) ABCDEF题解

    Codeforces Round #527 (Div. 3) 题解 题目总链接:https://codeforces.com/contest/1092 A. Uniform String 题意: 输入 ...

  5. Codeforces Round #485 (Div. 2) F. AND Graph

    Codeforces Round #485 (Div. 2) F. AND Graph 题目连接: http://codeforces.com/contest/987/problem/F Descri ...

  6. Codeforces Round #486 (Div. 3) F. Rain and Umbrellas

    Codeforces Round #486 (Div. 3) F. Rain and Umbrellas 题目连接: http://codeforces.com/group/T0ITBvoeEx/co ...

  7. Codeforces Round #501 (Div. 3) F. Bracket Substring

    题目链接 Codeforces Round #501 (Div. 3) F. Bracket Substring 题解 官方题解 http://codeforces.com/blog/entry/60 ...

  8. Codeforces Round #527 (Div. 3)

    一场div3... 由于不计rating,所以打的比较浪,zhy直接开了个小号来掉分,于是他AK做出来了许多神仙题,但是在每一个程序里都是这么写的: 但是..sbzhy每题交了两次,第一遍都是对的,结 ...

  9. Codeforces Round #375 (Div. 2) F. st-Spanning Tree 生成树

    F. st-Spanning Tree 题目连接: http://codeforces.com/contest/723/problem/F Description You are given an u ...

随机推荐

  1. SpringBoot2.0之四 简单整合MyBatis

    从最开始的SSH(Struts+Spring+Hibernate),到后来的SMM(SpringMVC+Spring+MyBatis),到目前的S(SpringBoot),随着框架的不断更新换代,也为 ...

  2. 追逐心目中的那个Ta

    申明:全篇皆为作者臆想,浪漫主义代表派作品,若有雷同,纯属巧合 人生最难过的不就是在一无所有的年纪里遇到了最想呵护一生的人,而在拥有一切的时候却失去了不顾一切的心. 长夜漫漫,本是相思人,偏听多情曲, ...

  3. 随心测试_软测基础_003< 理解测试 >

    目标:对于软件测试基础,利用清晰的框架,掌握相关知识点. 做某件事情,思路如下: 以上过程,理解为:针对x一个对象,围绕特定的目的,利用具备的方法,按一定的流程做事情,并反复思考总结,这样做是否达到目 ...

  4. Steps to One DP+莫比乌斯反演

    卧槽,这么秀吗??? 暂时留坑...

  5. 关于h5绘制canvas生成图片的注意点!

    1.第一个是关于移动端自适应的问题: 答:如果是最后只要一张canvas生成的图片,而不是要绘制的canvas的图形,则不需要考虑自适应,绘制canvas的时候的宽高,可以直接写成UI提供的图的大小, ...

  6. Jmeter二次开发代码(1)

    package org.apache.jmeter.functions; import java.util.Collection;import java.util.LinkedList;import ...

  7. rxjs一句话描述一个操作符(1)

    之前一直在写LINQ之类的东西,对于函数式的面向对象还是有一些功底,所以对于rxjs,感觉上不是很难,但是每次看完过几天就忘,还是记一下笔记吧,好记性不如烂笔头真不是盖的. 首先介绍几个重要的概念. ...

  8. idea打开项目,没有项目文件,文件报红

    删除项目文件夹中的.idea文件,重启idea,再执行如下操作.

  9. consul如何限制注册的ip

    假设当前服务器的ip是:192.168.56.130 允许 所有ip 注册 consul agent -server -ui -bootstrap-expect=1 -data-dir=/usr/lo ...

  10. 11.4 Flask session,闪现

    session 加密后放在用户浏览器的 cookie 中 于django 的自带session 不同,flask 的 session 需要导入 from flask import session 添加 ...