首页 > 其他 > 详细

【BZOJ4771】七彩树

时间:2018-06-02 14:42:33      阅读:167      评论:0      收藏:0      [点我收藏+]

题解:

首先扯一些并没有用的

如果问题是在序列上的怎么做

跟bzoj那道超级钢琴的加强版要求数字不同那个原理一样

主席树扫描过去 找到同一种颜色的前驱 这一段+1就可以了

扩展到树上

如果求链上的颜色个数,套上树剖和序列就一样了

另外找前驱在树上是不能用一个数组记录的

所以也得用主席树实现(维护每个颜色上一次出现的位置)

另外如果是查询子树颜色个数在线

我们可以用dfs序把树变序列

然后跟上面一样

如果离线

直接线段树启发式合并

然后回到这道题。。

上面的方法应该一个都不行(至少我不会)

不过正解也是很简单的

既然考虑每个点的子树不可行

我们可以考虑每个点对哪些点的子树有贡献

于是算法就出来了我们可以对每个点分开做

然后树链求并(我好像只会用虚树来求)

现在这题加了一个限制

线段树修改改成主席树就好了

 

【BZOJ4771】七彩树

原文:https://www.cnblogs.com/yinwuxiao/p/9125343.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!