JZOJ 5326. LCA 的统计 (Standard IO)
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)的更多相关文章
- JZOJ 2137. 【GDKOI2004】城市统计 (Standard IO)
2137. [GDKOI2004]城市统计 (Standard IO) Time Limits: 1000 ms Memory Limits: 128000 KB Detailed Limits ...
- JZOJ 5258. 友好数对 (Standard IO)
5258. 友好数对 (Standard IO) Time Limits: 1000 ms Memory Limits: 524288 KB Detailed Limits Description I ...
- JZOJ 1775. 合并果子2 (Standard IO)
1775. 合并果子2 (Standard IO) Time Limits: 1000 ms Memory Limits: 65536 KB Description 在一个果园里,多多已经将所有的果子 ...
- JZOJ 5286. 【NOIP2017提高A组模拟8.16】花花的森林 (Standard IO)
5286. [NOIP2017提高A组模拟8.16]花花的森林 (Standard IO) Time Limits: 1000 ms Memory Limits: 131072 KB Descript ...
- 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 ...
- JZOJ 5257. 小X的佛光 (Standard IO)
5257. 小X的佛光 (Standard IO) Time Limits: 2000 ms Memory Limits: 524288 KB Description Input Output Sam ...
- JZOJ 5307. 【NOIP2017提高A组模拟8.18】偷窃 (Standard IO)
5307. [NOIP2017提高A组模拟8.18]偷窃 (Standard IO) Time Limits: 1000 ms Memory Limits: 262144 KB Description ...
- JZOJ 1349. 最大公约数 (Standard IO)
1349. 最大公约数 (Standard IO) Time Limits: 1000 ms Memory Limits: 65536 KB Description 小菜的妹妹小诗就要读小学了!正所谓 ...
- JZOJ 1736. 扑克游戏 (Standard IO)
1736. 扑克游戏 (Standard IO) Time Limits: 1000 ms Memory Limits: 128000 KB Description 有一棵无穷大的满二叉树,根为sta ...
随机推荐
- 爱心Java for循环实现
public class x { public static void main(String[] args) { for (int i = 0, k = 0; i < 14; i++) { i ...
- elasticserch-hadoop spak 网络配置异常排查
elasticserch hadoop 在本地测试写入 elasticsearch:9200时成功 线上环境却报错如下 org.elasticsearch.hadoop.EsHadoopIllegal ...
- 003.前端开发知识,前端基础CSS(2020-01-07)
一.CSS初识 CSS通常称为CSS样式表或层叠样式表(级联样式表),主要用于设置HTML页面中的文本内容(字体.大小.对齐方式等).图片的外形(宽高.边框样式.边距等)以及版面的布局等外观显示样式. ...
- LiauidCrystal
1.begin()函数语法: lcd.begin(cols,rows) cols:列数: rows:行数: 2.print()函数,语法: lcd.print(data) lcd.print(data ...
- 利用VLC解码youtube视频链接
一.需求 现在有youtube视频播放链接(I),需要得到可以直接播放的视频链接(O). 输入链接(I): https://www.youtube.com/watch?v=xAsjRRMMg_Q 输出 ...
- Create Collection Type with Class Type Constraints
Create Collection Type with Class Type Constraints: new TypeToken<ArrayList<ClassType>>( ...
- iOS UICollectionViewCell 的拖动
1.长按cell的情况下实现拖动,所以理应想到用长按手势. 2.既然实现移动cell,就要看看UICollectionView 有没有方法或者协议可以移动的.通过查看UICollectionView的 ...
- Rx系列---响应式编程
Rx是ReactiveX的简称,翻译过来就是响应式编程 首先要先理清这么一个问题:Rxjava和我们平时写的程序有什么不同.相信稍微对Rxjava有点认知的朋友都会深深感受到用这种方式写的程序和我们一 ...
- vue element 关闭当前tab 跳转到上一路由
方法一 this.$store.dispatch('delVisitedViews', this.$route); this.$router.go(-1); 方法二 this.$store.state ...
- [LC] 746. Min Cost Climbing Stairs
On a staircase, the i-th step has some non-negative cost cost[i] assigned (0 indexed). Once you pay ...