题目:https://www.luogu.org/problemnew/show/P1351

对拍了一下,才发现自己漏掉了那种拐弯的情况。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=2e5+,mod=;
int n,hd[N],xnt,to[N<<],nxt[N<<],w[N],s[N],mx[N],ans,prn;
int rdn()
{
int ret=,fx=; char ch=getchar();
while(ch>''||ch<''){ if(ch=='-')fx=-; ch=getchar();}
while(ch>=''&&ch<='') ret=(ret<<)+(ret<<)+ch-'', ch=getchar();
return ret*fx;
}
void add(int x,int y)
{
to[++xnt]=y; nxt[xnt]=hd[x]; hd[x]=xnt;
to[++xnt]=x; nxt[xnt]=hd[y]; hd[y]=xnt;
}
void upd(int &x){x-=(x>=mod?mod:);}
void dfs(int cr,int fa)
{
int ns=,nm=;
for(int i=hd[cr],v;i;i=nxt[i])
if((v=to[i])!=fa)
{
dfs(v,cr); ans+=s[v]*w[cr]%mod;
upd(ans);
prn=max(prn,mx[v]*w[cr]);
s[cr]+=w[v]; mx[cr]=max(mx[cr],w[v]);
upd(s[cr]); ans+=ns*w[v]%mod; upd(ans); ns+=w[v]; upd(ns);
prn=max(prn,nm*w[v]); nm=max(nm,w[v]);
}
}
int main()
{
// freopen("lg1351-data.in","r",stdin);
// freopen("lg1351-zj.out","w",stdout);
n=rdn();
for(int i=,x,y;i<n;i++)
{
x=rdn(); y=rdn(); add(x,y);
}
for(int i=;i<=n;i++) w[i]=rdn();
dfs(,);
ans<<=; if(ans>=mod) ans-=mod;
printf("%d %d\n",prn,ans);
return ;
}

洛谷 1351 联合权值——树形dp的更多相关文章

  1. 洛谷P1351 联合权值(树形dp)

    题意 题目链接 Sol 一道很简单的树形dp,然而被我写的这么长 分别记录下距离为\(1/2\)的点数,权值和,最大值.以及相邻儿子之间的贡献. 树形dp一波.. #include<bits/s ...

  2. 洛谷 P1351 联合权值 —— 树形DP

    题目:https://www.luogu.org/problemnew/show/P1351 树形DP,别忘了子树之间的情况(拐一下距离为2). 代码如下: #include<iostream& ...

  3. 洛谷——P1351 联合权值

    https://www.luogu.org/problem/show?pid=1351 题目描述 无向连通图G 有n 个点,n - 1 条边.点从1 到n 依次编号,编号为 i 的点的权值为W i , ...

  4. [NOIP2014] 提高组 洛谷P1351 联合权值

    题目描述 无向连通图G 有n 个点,n - 1 条边.点从1 到n 依次编号,编号为 i 的点的权值为W i ,每条边的长度均为1 .图上两点( u , v ) 的距离定义为u 点到v 点的最短距离. ...

  5. 洛谷 P1351 联合权值

    题目描述 无向连通图G 有n 个点,n - 1 条边.点从1 到n 依次编号,编号为 i 的点的权值为W i ,每条边的长度均为1 .图上两点( u , v ) 的距离定义为u 点到v 点的最短距离. ...

  6. 『题解』洛谷P1351 联合权值

    更好的阅读体验 Portal Portal1: Luogu Portal2: LibreOJ Description 无向连通图\(\mathrm G\)有\(n\)个点,\(n - 1\)条边.点从 ...

  7. 洛谷 P1351 联合权值 题解

    P1351 联合权值 题目描述 无向连通图 \(G\) 有 \(n\) 个点,\(n-1\) 条边.点从 \(1\) 到 \(n\) 依次编号,编号为 \(i\) 的点的权值为 \(W_i\)​,每条 ...

  8. 洛谷P1351 联合权值

    \(\Large\textbf{Description:}\) \(\large一棵树,父子之间距离为1,求距离为2的两点点权之积的最大值与和.\) \(\Large\textbf{Solution: ...

  9. 洛谷 P3177 [HAOI2015]树上染色 树形DP

    洛谷 P3177 [HAOI2015]树上染色 树形DP 题目描述 有一棵点数为 \(n\) 的树,树边有边权.给你一个在 \(0 \sim n\)之内的正整数 \(k\) ,你要在这棵树中选择 \( ...

随机推荐

  1. python基础-第五篇-5.2递归

    又是一个阳光明媚的日子,小白看着刚刚从东边升起的太阳,感觉太阳爷爷也在向她打招呼,小白就不经的微笑起来!心想:今天又会学到什么有趣的东西呢?有些小期待,也有些小激动! 小刘来得比小白还早,两辆相视而笑 ...

  2. 使用 Python 为 KVM 编写脚本,第 1 部分: libvirt

    虚拟化是目前市场上大多数服务器操作系统的标准设备.在 Linux® 的世界里,服务器虚拟化有两个主要选择:基于 Kernel 的虚拟机 (KVM) 和 Xen.KVM 是 Red Hat 和其他公司采 ...

  3. CVPR 2018paper: DeepDefense: Training Deep Neural Networks with Improved Robustness第一讲

    前言:好久不见了,最近一直瞎忙活,博客好久都没有更新了,表示道歉.希望大家在新的一年中工作顺利,学业进步,共勉! 今天我们介绍深度神经网络的缺点:无论模型有多深,无论是卷积还是RNN,都有的问题:以图 ...

  4. 更改node版本

    npm install -g n n stable 或 n v4.5.0

  5. 牛客小白月赛1 C 分元宵【快速幂】

    题目链接 https://www.nowcoder.com/acm/contest/85/C 思路 有 A 种 元宵馅,B 种元宵皮 所以 我们可以认为 有Q = A * B 种 元宵 有 C 张桌子 ...

  6. pyspark

    http://www.aboutyun.com/thread-18150-1-1.html

  7. 每天一个Linux命令(25)chgrp命令

          chgrp命令用来改变文件或目录所属的用户组. (1)用法:     用法:  chgrp  [选项参数] [组] [文件] 或 chgrp  [选项]   组文件...   POSIX ...

  8. Data Structure Binary Tree: Iterative Postorder Traversal

    http://www.geeksforgeeks.org/iterative-postorder-traversal-using-stack/ #include <iostream> #i ...

  9. linux操作系统使用中的一些总结

    VIM常用命令 gg   //到第一行 (N)G   //到第n行(N为整数) G    //到最后一行 0    //到行头 $  //到行尾 (N)dd  //删除N行,并将内容保存到粘贴板 p ...

  10. 0521 HTML基础

    一.web标准 web准备介绍: w3c:万维网联盟组织,用来制定web标准的机构(组织) web标准:制作网页遵循的规范 web准备规范的分类:结构标准.表现标准.行为标准. 结构:html.表示: ...