传送门
这道题并不是像普通的点分一样现在根上加然后在儿子上把不合法的减去,而是直接只能查询合法的,这种思维定式要改一改了。。。 刚开始一直在往这方面考虑。。直到看到有人说这道题和超级钢琴那道题很像才受到启发yy出这种不靠谱的的做法。。。
首先从当前根出发到每一个点都求出了一条路径,那么怎么组合是合法的呢?就是路径的两个端点不能在根的同一个儿子里 是否在同一个儿子里可以用dfs序来区分,那么标记dfs序之后,每一个点能匹配的点就得到了一段连续的区间 如果直接将其展成序列的话,也就等价于每一个点对应一段合法的区间,然后求前m大 这就已经变成超级钢琴那道题了 首先对于每一个点将其区间内的最大值求出,然后压到堆里。每从堆中弹出一个点就将其对应的区间[l,loc-1][loc+1,r]都加进堆里,这样不断地弹m次就行了 时间复杂度
新闻热点
疑难解答