Problem’s Website
Solution
这道题的题意还是很好理解的。
做法好像有很多种,因为我是个 菜鸡 ,所以就说一种比较$low$的做法。
本题要用到的数据结构
树链剖分
动态开点线段树
以上两个内容在我的blog中都有相关内容,如果有不会的同学可以先去学习一下。
基本思路
我们将一个人的路线拆分一下,拆成$s \to LCA(s, t) \to t$,那么显然,当$dep[s]-dep[i]==w[i]$或$dep[t]-dep[i]==dis(s,t)-w[i]$时($dis$为两点间的距离, 前面一个式子用于第一段,后面的式子用于第二段 ),答案可以$+1$,其实我们可以差分来做,但我是 菜鸡,我不会那么做,所以“智商不够,数据结构来凑!”,我们用一个动态开点线段树来维护。
特别注意:对于$LCA$要判重!
Code
1 |
|
rp++