123. bx和妹子的游戏

题目描述

这天,bxbx和妹子在一个有根树上玩游戏。

这个有根树有nn个节点,编号从11到nn,其中11号节点是根节点。除了11号节点每个节点都有一个父亲节点。第ii个节点有权值a_ia​i​​。

定义s(u, v)s(u,v)为uu到vv的简单路径上所有点的权值之和(包括uu和vv)。

bxbx会随机选一个节点uu,妹子随机选一个节点vv,假设uu和vv的LCALCA为pp,bxbx能获得\max(s(u, p), s(v, p))max(s(u,p),s(v,p))的愉悦值。

现在你需要回答,考虑所有情况之下(n^2n​2​​种情况),bxbx所获得的愉悦值之和。

一个节点uu的祖先定义为从uu一直往父亲节点走若干次能到达的节点,其中uu是自身的祖先。两个节点的LCALCA(最近公共祖先)定义为既是uu的祖先,也是vv的祖先,并且和uu的距离最近的一个节点。

输入格式

输入第一行包括一个整数TT,表示数据组数。

对于每组数据,第一行一个整数nn。

第二行n-1n−1个整数,第ii个整数表示节点i+1i+1的父亲p_{i+1}p​i+1​​。

第三行nn个整数,第ii个整数表示节点i的权值a_ia​i​​。

1 \le T \le 201≤T≤20

2 \le n \le 1000002≤n≤100000

1 \le p_{i + 1} \le i, 1 \leq i \leq n - 11≤p​i+1​​≤i,1≤i≤n−1

1 \leq a_i \leq 100001≤a​i​​≤10000

输出格式

对每组数据,输出 bx 获得的愉悦值之和。

样例数据

输入

2
3
1 1
1 2 3
2
1
1 2

输出

28
9

max( S[u,p] , S[v,p] ) = max( S[1,u] , S[1,v] ) - ( S[1,p] - a[p] )

显然可以在O(n)内求出S[1,k]

S[1,i]对答案的贡献=

S[1,p]-a[p] 对答案的贡献为 = - ( p 作为 lca 的次数 * (S[1,p]-a[p]) )

#include<iostream>
#include<cstdlib>
#include<cstdio>
#include<string>
#include<vector>
#include<deque>
#include<queue>
#include<algorithm>
#include<set>
#include<map>
#include<stack>
//#include<cti1me>
#include<string.h>
#include<math.h>
#include<list>using namespace std;#define ll long long
#define pii pair<int,int>const int inf = 1e9+7;const int N = 100000 + 5;struct Edge{int to,next;
}edge[N];
int head[N];int a[N];void addEdge(int k,int u,int v){edge[k].to=v;edge[k].next=head[u];head[u]=k;
}ll s[N];
ll childs[N];
ll tS[N];void dfs(int u,int sum){s[u]=sum+a[u];childs[u]=1;for(int i=head[u];i!=-1;i=edge[i].next){int v=edge[i].to;dfs(v,s[u]);childs[u]+=childs[v];}
}ll f(int u){//u作为lca有多少种情况ll ans=1;for(int i=head[u];i!=-1;i=edge[i].next){int x=edge[i].to;ans+=childs[x];for(int j=edge[i].next;j!=-1;j=edge[j].next){int y=edge[j].to;ans+=childs[x]*childs[y];}}return ans;
}ll slove(int n){dfs(1,0);ll ans=0;for(int i=1;i<=n;++i){tS[i]=s[i];}sort(s+1,s+n+1);for(int i=1;i<=n;++i){ans+=s[i]*i;ans-=f(i)*(tS[i]-a[i]);}return ans;
}int main()
{//freopen("/home/lu/Documents/r.txt","r",stdin);//freopen("/home/lu/Documents/w.txt","w",stdout);int T;scanf("%d",&T);while(T--){int n;scanf("%d",&n);fill(head,head+n+1,-1);int nume=0;for(int i=2;i<=n;++i){int p;scanf("%d",&p);addEdge(nume++,p,i);}ll sub=0;for(int i=1;i<=n;++i){scanf("%d",&a[i]);sub+=a[i];}printf("%lld\n",2*slove(n)-sub);}return 0;
}

scutcode123. bx和妹子的游戏相关推荐

  1. 想剑网三妹子最多服务器,萌妹子玩游戏之剑网三 国产网游经典大作来袭

    [腾讯游戏频道 ( Hello大家好,欢迎收看萌妹子玩游戏.我就是进可高冷御姐,退可卖萌萝莉的依依酱. 这期节目给大家带来的是<剑网3>全新资料片"逐鹿中原",正所谓仇 ...

  2. 跟妹子玩游戏结果一下日了好多天

    i.             前言 过年回家饭局上碰到一个原来心仪的妹子,虽然已经4.5年没见面了,妹子见到我还是分外亲热,不仅主动挨着我坐着,居然还邀请我一起玩游戏,心中窃喜不已,哥们王者刚上了王者 ...

  3. 某程序员吐槽:免费教妹子Java编程,妹子却不让自己找她闲聊!

    许多程序员教妹子编程.带妹子打游戏,都是醉翁之意不在酒,名为教学,实为追求,但有一个程序员小哥哥却比较悲催,他答应一个妹子当她师傅,教她Java编程,结果妹子却说,学习是学习,平时是平时,让小哥哥平时 ...

  4. 【BZOJ 3729】3729: Gty的游戏 (Splay维护dfs序+博弈)

    未经博主同意不得转载 3729: Gty的游戏 Time Limit: 20 Sec  Memory Limit: 128 MB Submit: 448  Solved: 150 Descriptio ...

  5. 实时帧数手机_ROG游戏手机评测:小老弟让我教教你什么叫电竞

    ROG,没错你第一时间就会想起DIY界那鼎鼎大名的硬件系列--ROG系列硬件,或许大家还会想起另外一个词:败家之眼.ROG在人们的印象中,就是一个高贵典雅的代名词,独特的LOGO,极致的用料,打破行业 ...

  6. 游戏陪玩APP开发的功能和特点

    1.游戏评测推荐 根据对游戏的评测,向用户介绍该款游戏的内容,后根据游戏的可玩性和用户的特点,向用户推荐. 2.社区交流 通过社区的交流,促进用户之前的关系的建立,促进用户的活跃度. 3.游戏陪玩服务 ...

  7. 玩3D游戏花屏显卡测试过没有问题?网站测试咋测才能减少Bug

    在上一篇文章中,小编为您详细介绍了关于<如何更改显卡的刷新频率?台式电脑64位 显卡N卡 GTX680 用驱动精灵更新 过后 屏幕分辨率只有800X60070>相关知识.本篇中小编将再为您 ...

  8. 极具创意的3D推箱子游戏《凯瑟琳》制作流程全公开!

    http://www.opengpu.org/forum.php?mod=viewthread&tid=5945&extra=page%3D1 玩过推箱子游戏么?玩过3D的推箱子游戏么 ...

  9. 汇编语言编写的一个“接球游戏”

    学习汇编语言一学期了,为了完成期末作业,就花了10多个小时写了个"接球游戏".游戏虽然很简单,但是完成后很开心,毕竟是自己用汇编语言写的第一个程序. 一.游戏界面设计 屏幕采用的是 ...

最新文章

  1. LeetCode - Maximum Depth of Binary Tree
  2. PHP CURL方法,GETPOST请求。
  3. 滴滴自动驾驶获得江苏省苏州公安局颁发的路测牌照
  4. 2021年春季学期-信号与系统-第七次作业参考答案-第四小题
  5. python语言用途-python编程语言有什么用途
  6. Another app is currently holding the yum lock; waiting for it to exit...
  7. SAP License:ERP咨询顾问之路
  8. 伺服电机回原点的原理_西门子V90伺服电机绝对值编码器回原点常用方法
  9. vscode初次配置
  10. Games101 Tansformer
  11. 软件安装-Mysql数据库
  12. 杨振宁100岁了,诺奖都不算他的人生巅峰
  13. 红红火火的丹麦造陆运动,和它恍恍惚惚的“硅谷梦”
  14. 52_LSTM及简介,RNN单元的内部结构,LSTM单元的内部结构,原理,遗忘门,输入门,输出门,LSTM变体GRU,LSTM变体FC-LSTM,Pytorch LSTM API介绍,案例(学习笔记)
  15. shell grep正则匹配汉字
  16. 霍纳法则(Horner Rule)--计算多项式的值
  17. 京东店铺托管引流技巧有哪些?
  18. Nvidia30系显卡+Windows系统的CUDA 11安装100%成功教程
  19. [UVALive3942] Remember the Word 字符串
  20. sql脚本语言中的循环语句介绍

热门文章

  1. 2010年12月证券从业资格考试预测题(附答案)②
  2. 测试开发成长学习路线--实践篇
  3. 距离放假还有一周,送个机械键盘吧
  4. iOS面向切面的TableView-AOPTableView
  5. 深度实践SPARK机器学习_学习笔记_第二章2.3加载数据
  6. Alpine Linux 配置使用技巧,docker的基本使用以及docker in docker、docker run docker
  7. Redis:缓存一致性问题(缓存更新策略)
  8. java 设置xmx_jvm~xmx设置多少合适
  9. win10更新后自带Microsoft Edge浏览器主页无法锁定解决
  10. python实现连续变量最优分箱详解--CART算法