题目


分析

处理出所有点到根节点的答案,然后换根依次求最小值


代码

#include <cstdio>
#include <cctype>
#define rr register
using namespace std;
typedef long long lll; const int N=200011;
struct node{int y,w,next;}e[N<<1];
lll dp[N],W[N],ans=1e18,s; int n,k=1,a[N],as[N];
inline signed iut(){
rr int ans=0; rr char c=getchar();
while (!isdigit(c)) c=getchar();
while (isdigit(c)) ans=(ans<<3)+(ans<<1)+(c^48),c=getchar();
return ans;
}
inline lll min(lll a,lll b){return a<b?a:b;}
inline void dfs1(int x,int fa){
W[x]=a[x];
for (rr int i=as[x];i;i=e[i].next)
if (e[i].y!=fa){
dfs1(e[i].y,x);
dp[x]+=dp[e[i].y]+e[i].w*W[e[i].y];
W[x]+=W[e[i].y];
}
}
inline void dfs2(int x,int fa){
for (rr int i=as[x];i;i=e[i].next)
if (e[i].y!=fa){
dp[e[i].y]=dp[x]-W[e[i].y]*e[i].w+(s-W[e[i].y])*e[i].w;
dfs2(e[i].y,x);
}
}
signed main(){
n=iut();
for (rr int i=1;i<=n;++i) a[i]=iut(),s+=a[i];
for (rr int i=1;i<n;++i){
rr int x=iut(),y=iut(),w=iut();
e[++k]=(node){y,w,as[x]},as[x]=k;
e[++k]=(node){x,w,as[y]},as[y]=k;
}
dfs1(1,0),dfs2(1,0);
for (rr int i=1;i<=n;++i) ans=min(ans,dp[i]);
return !printf("%lld",ans);
}

#换根dp#洛谷 2986 [USACO10MAR]Great Cow Gathering G的更多相关文章

  1. 洛谷 P2986 [USACO10MAR]Great Cow Gat…(树形dp+容斥原理)

    P2986 [USACO10MAR]伟大的奶牛聚集Great Cow Gat… 题目描述 Bessie is planning the annual Great Cow Gathering for c ...

  2. BZOJ 1827 洛谷 2986 [USACO10MAR]伟大的奶牛聚集Great Cow Gather

    [题解] 很容易想到暴力做法,枚举每个点,然后对于每个点O(N)遍历整棵树计算答案.这样整个效率是O(N^2)的,显然不行. 我们考虑如果已知当前某个点的答案,如何快速计算它的儿子的答案. 显然选择它 ...

  3. 洛谷 P4284 [SHOI2014]概率充电器 概率与期望+换根DP

    洛谷 P4284 [SHOI2014]概率充电器 概率与期望+换根DP 题目描述 著名的电子产品品牌\(SHOI\) 刚刚发布了引领世界潮流的下一代电子产品-- 概率充电器: "采用全新纳米 ...

  4. 换根DP+树的直径【洛谷P3761】 [TJOI2017]城市

    P3761 [TJOI2017]城市 题目描述 从加里敦大学城市规划专业毕业的小明来到了一个地区城市规划局工作.这个地区一共有ri座城市,<-1条高速公路,保证了任意两运城市之间都可以通过高速公 ...

  5. 洛谷$P3647\ [APIO2014]$连珠线 换根$dp$

    正解:换根$dp$ 解题报告: 传送门! 谁能想到$9102$年了$gql$居然还没写过换根$dp$呢,,,$/kel$ 考虑固定了从哪个点开始之后,以这个点作为根,蓝线只可能是直上直下的,形如&qu ...

  6. Codeforces 891D - Sloth(换根 dp)

    Codeforces 题面传送门 & 洛谷题面传送门 换根 dp 好题. 为啥没人做/yiw 首先 \(n\) 为奇数时答案显然为 \(0\),证明显然.接下来我们着重探讨 \(n\) 是偶数 ...

  7. Codeforces 997D - Cycles in product(换根 dp)

    Codeforces 题面传送门 & 洛谷题面传送门 一种换根 dp 的做法. 首先碰到这类题目,我们很明显不能真的把图 \(G\) 建出来,因此我们需要观察一下图 \(G\) 有哪些性质.很 ...

  8. [BZOJ4379][POI2015]Modernizacja autostrady[树的直径+换根dp]

    题意 给定一棵 \(n\) 个节点的树,可以断掉一条边再连接任意两个点,询问新构成的树的直径的最小和最大值. \(n\leq 5\times 10^5\) . 分析 记断掉一条边之后两棵树的直径为 \ ...

  9. 2018.10.15 NOIP训练 水流成河(换根dp)

    传送门 换根dp入门题. 貌似李煜东的书上讲过? 不记得了. 先推出以1为根时的答案. 然后考虑向儿子转移. 我们记f[p]f[p]f[p]表示原树中以ppp为根的子树的答案. g[p]g[p]g[p ...

  10. 小奇的仓库:换根dp

    一道很好的换根dp题.考场上现场yy十分愉快 给定树,求每个点的到其它所有点的距离异或上m之后的值,n=100000,m<=16 只能线性复杂度求解,m又小得奇怪.或者带一个log像kx一样打一 ...

随机推荐

  1. java日期中YYYY与yyyy的区别

    date==>string string ==>date 总结: 个人觉得:当天所在的周属于的年份,一周从周日开始,周六结束,只要本周跨年,那么这周就算入下一年.这个结论在正向转换的时候是 ...

  2. mysql中如何批量生成百万级数据

    # 准备 #1. 准备表 create table s1( id int, name varchar(20), gender char(6), email varchar(50), first_nam ...

  3. error接口

    // 实际上它是interface类型,这个类型有一个返回错误信息的单一方法: type error interface{ Error() string } 创建一个error最简单的方法就是调用er ...

  4. 【LeetCode双指针】合并两个有序数组,从后向前遍历

    合并两个有序数组 https://leetcode.cn/problems/merge-sorted-array/ 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m ...

  5. 04、Etcd中常见的概念

    本篇内容主要来源于自己学习的视频,如有侵权,请联系删除,谢谢. 上一章节,我们学习了 Etcdctl 的使用,从中窥探了 Etcd 的强大之处.从这一节开始,后面的内容基本上都是偏理论的东西,争取在看 ...

  6. 【Azure 事件中心】向Event Hub发送数据异常 : partitionId[null]: Sending messages timed out

    问题描述 在使用Java 代码向 Azure Event Hub发送数据时,先后遇见了如下两种异常消息: 1)ERROR c.t.d.h.s.source.EventHubLogConsumer - ...

  7. 【Azure Function】开启Azure Function输出详细Debug日志 ( --verbose)

    When func.exe is run from VS, it suggests "For detailed output, run func with --verbose flag.&q ...

  8. 【Azure Developer】在使用中国区 Azure AD B2C时, AUTHORITY的值是什么呢?

    问题描述 使用MSAL4J的SDK调用(源码地址:https://github.com/Azure-Samples/ms-identity-msal-java-samples/tree/main/3. ...

  9. 深入理解与应用CSS clip-path 属性

    clip-path clip-path是什么 clip-path 是一个CSS属性,允许开发者创建一个剪切区域,从而决定元素的哪些部分可见,哪些部分会被隐藏.通过定义这个剪切路径(clipping p ...

  10. Android学习之SQLite数据库存储

    •引言 概念 SQLite数据库,和其他的SQL数据库不同, 我们并不需要在手机上另外安装一个数据库软件,Android系统已经集成了这个数据库: 特点 SQLite是一个轻量级的关系型数据库,运算速 ...