NKOJ 2703 (WC 2014)紫荆花之恋 (点分治+平衡树+替罪羊)

P2703【WC2014】紫荆花之恋(强数据版)

问题描述

强强和萌萌是一对好朋友。有一天他们在外面闲逛,突然看到前方有一棵紫荆树。这已经是紫荆花废物的季节了,无数的花瓣以肉眼可见的速度从紫荆树上长了出来。
仔细看看的话,这棵大树实际上是一个带权树。每个时刻他会长出一个新的叶子节点。每个节点上有一个可爱的小精灵,新长出的节点上也会同时出现一个新的小精灵。小精灵是很萌但是也很脆弱的生物,每个小精灵i都有一个感受能力ri,小精灵i,j成为朋友当且仅当在树上i和j的距离dist(i,j)<=ri+rj,其中dist(i,j)表示在这棵树上i和j的唯一路径上所有边的边权和。
强强和萌萌很好奇每次新长出了一个叶子节点之后这棵树上总共有几对朋友。
我们假定这棵树一开始为空,节点按照加入的顺序从1开始编号。由于强强非常好奇,你必须在每次出现新的节点后马上给出总共的朋友对数不能拖延哦。

输入格式

输入文件共有n+2行。
第一行包含一个正整数T,表示测试点编号。
第二行包含一个正整数n,表示总共要加入的节点数。
我们令加入前的总工朋友对数是last_ans,在一开始时last_ans=0。
接下来n行中第i行有三个数ai,ci,ri,表示节点i的父亲节点的编号为(ai xor ( last_ans mod 109)),与父亲节点之间的边权为ci,节点i上小精灵的感受能力为ri。
注意a1=c1=0,表示1号点事根节点。对于i>=2,父亲节点的编号至少是1,至多是i-1。

输出格式

输出文件包含n行,每行输出1个整数,表示加入第i个点之后,树上共有几对朋友。

样例输入

0
5
0 0 6
1 2 4
0 9 4
0 5 5
0 2 4

样例输出

0
1
2
4
7


考虑点分治,一个点对合法仅当他们不在同一颗子树上且 dep[i]+dep[j]<=r[i]+r[j]dep

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值