5326. LCA 的统计 (Standard IO)

Time Limits: 1000 ms Memory Limits: 131072 KB

Description

Input

Output

Sample Input

2 2

1 1

Sample Output

17

Data Constraint

Hint

题解

树形dp

枚举now=lca(i,j),快速算出符合条件的i的权值和与j的权值和的乘积,更新答案。

有三种情况

1. i和j在不同的子树中,设lca(u,v)的所有子节点权值和为sum1,sum2,sum3...sumk,则这部分答案就是∑i∑i≠jsumi∗sumj。设A=∑isumi,那么这部分答案就是∑isumi∗(A−sumi)

2. i和j有一个是now,那么这部分答案就是2∗A∗wnow

3. i和j都是now,那么这部分答案就是wnow 2

把上面三种情况求和,由于lca(i,j)都是now,所以再乘个wnow就是答案了。

代码

#include<cstdio>
#define mo 1000000007
#define ll long long
#define N 1000010 long fa[N],lc[N],rb[N],next[N],sum[N],ch[N],w[N]; void build(long now)
{
if(!now)return;
build(fa[now]);
ch[fa[now]]+=ch[now];
} long solve(long now)
{ long ans=0,s1=0,s2=0,i;
for(i=lc[now];i;i=rb[i]){
ans=(ans+solve(i))%mo;
s1=(s1+sum[i])%mo;
}
sum[now]=(sum[now]+s1)%mo;
for(i=lc[now];i;i=rb[i]){
ans=(ans+(ll)(s1-sum[i])*sum[i]%mo*w[now]%mo)%mo;
}
ans=((ll)ans+(ll)w[now]*w[now]%mo*w[now]%mo+2ll*s1%mo*w[now]%mo*w[now]%mo)%mo;
return ans;
} int main()
{ long n,i;
scanf("%ld%ld",&n,&w[1]);
sum[1]=w[1];
for(i=2;i<=n;i++){
scanf("%ld%ld",&fa[i],&w[i]);
sum[i]=w[i];
ch[fa[i]]++;
if(!lc[fa[i]])
lc[fa[i]]=i;
else
rb[next[fa[i]]]=i;
next[fa[i]]=i;
}
for(i=1;i<=n;i++)
if(!ch[i])
build(i);
printf("%ld\n",solve(1));
return 0;
}

JZOJ 5326. LCA 的统计 (Standard IO)的更多相关文章

  1. JZOJ 2137. 【GDKOI2004】城市统计 (Standard IO)

    2137. [GDKOI2004]城市统计 (Standard IO) Time Limits: 1000 ms  Memory Limits: 128000 KB  Detailed Limits  ...

  2. JZOJ 5258. 友好数对 (Standard IO)

    5258. 友好数对 (Standard IO) Time Limits: 1000 ms Memory Limits: 524288 KB Detailed Limits Description I ...

  3. JZOJ 1775. 合并果子2 (Standard IO)

    1775. 合并果子2 (Standard IO) Time Limits: 1000 ms Memory Limits: 65536 KB Description 在一个果园里,多多已经将所有的果子 ...

  4. JZOJ 5286. 【NOIP2017提高A组模拟8.16】花花的森林 (Standard IO)

    5286. [NOIP2017提高A组模拟8.16]花花的森林 (Standard IO) Time Limits: 1000 ms Memory Limits: 131072 KB Descript ...

  5. JZOJ 5305. 【NOIP2017提高A组模拟8.18】C (Standard IO)

    5305. [NOIP2017提高A组模拟8.18]C (Standard IO) Time Limits: 1000 ms Memory Limits: 131072 KB Description ...

  6. JZOJ 5257. 小X的佛光 (Standard IO)

    5257. 小X的佛光 (Standard IO) Time Limits: 2000 ms Memory Limits: 524288 KB Description Input Output Sam ...

  7. JZOJ 5307. 【NOIP2017提高A组模拟8.18】偷窃 (Standard IO)

    5307. [NOIP2017提高A组模拟8.18]偷窃 (Standard IO) Time Limits: 1000 ms Memory Limits: 262144 KB Description ...

  8. JZOJ 1349. 最大公约数 (Standard IO)

    1349. 最大公约数 (Standard IO) Time Limits: 1000 ms Memory Limits: 65536 KB Description 小菜的妹妹小诗就要读小学了!正所谓 ...

  9. JZOJ 1736. 扑克游戏 (Standard IO)

    1736. 扑克游戏 (Standard IO) Time Limits: 1000 ms Memory Limits: 128000 KB Description 有一棵无穷大的满二叉树,根为sta ...

随机推荐

  1. 吴裕雄--天生自然C语言开发:共同体

    union [union tag] { member definition; member definition; ... member definition; } [one or more unio ...

  2. deeplearning.ai 构建机器学习项目 Week 1 机器学习策略 I

    这门课是讲一些分析机器学习问题的方法,如何更快速高效的优化机器学习系统,以及NG自己的工程经验和教训. 1. 正交化(Othogonalization) 设计机器学习系统时需要面对一个问题是:可以尝试 ...

  3. vuex-cart 介绍

    使用vue2 + vuex + vue-cli + localStorage + less,实现本地储存的购物车. 安装 1 git clone https: 1 cd sls-vuex 1 npm ...

  4. LeetCode Day 4

    LeetCode0011 给定 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) .在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, ...

  5. mysql数据库常用命令入门

    查询所有数据库 show databases; 创建数据库 create database mytest001 default character set utf8; 查看数据库的默认字符集 show ...

  6. 公式化学习urllib(第一卷)

    Import urllib.request 正常爬取网页: url=网址 +代表 下面测试一下: 结果我就不显示了 令html为读取后的对象 先用正则表达式抓取数据 Import re 令rule是抓 ...

  7. Mysql的分页查询语句的性能分析

    MySql分页sql语句,如果和MSSQL的TOP语法相比,那么MySQL的LIMIT语法要显得优雅了许多.使用它来分页是再自然不过的事情了. 1.1最基本的分页方式: 在中小数据量的情况下,这样的S ...

  8. (四)mybatis缓存、事务、插件的基本知识

    mybatis缓存.事务.插件的基础 一.缓存 (一)一级缓存与二级缓存 一级缓存 为了获得更好的性能,最重要的就是一级缓存.每个session对象维持一个一级缓存,session对象创建时缓存创建, ...

  9. Docker系列之实战:3.安装MariaDB

    环境 [root@centos181001 ~]# cat /etc/centos-release CentOS Linux release 7.6.1810 (Core) [root@centos1 ...

  10. 抛开贾跃亭!法拉第FF91能成功吗?

    在本届CES 2018上,FF 91又一次刷屏了,而且实实在在地允许试乘了. 抛开贾跃亭的因素不谈,你觉得FF 91能成功吗? 最开始知道法拉第FF91这款电动汽车的名字时,总感觉怪怪的--像是把法拉 ...