Problem’s Website
Solution
这道题考察了两个知识点,一个是树链剖分,另一个是动态开点线段树。
树剖不会的同学请点击这
我们着重来讲一下动态开点线段树
首先我们知道要开一个普通的线段树至少需要元素个数的$4$倍,对于这道题,如果对每一个宗教都开一个线段树显然不行,我们要对线段树进行改变,只保留树上有用的节点,单独用两个数组存左右儿子,查询时,遇到空区就直接返回,下面是两个图,可以帮助大家理解($Drawn$ $by$ $zyb$)
修改9
再修改6
但这种线段树的空间再不超出限制的情况下尽量开最大,否则会$\mathrm{RE}$或$\mathrm{WA}$
修改函数两个,一个是把原来的去掉,另一个是加上新的内容,请读者根据$code$自行理解。。。
Code
1 |
|
rp++