P2146 [NOI2015]软件包管理器(树链剖分+线段树区间覆盖)
题目链接题目大意(简化):给你一棵树,编号从0到n-1,给你两种操作:in u 查找从u结点到根节点的路径上有多少个0,并将他们置为1,输出。un u 查找以u为根的子树有多少个1,输出并将他们置为0.大体思路:很明显,查找以u为根的子树可以用dfs序直接修改,但是查找从u到根节点的路径上的信息暴力的话是O(n)很明显不可以,所以考虑到树链剖分。然后线段树维护区间信息。注意点:除去线段树的基本操作,只有一个需要注意的地方,就是编号是从0开始,如果结点编号不加1的话就要把son[]数组初始值置
原创
2020-10-11 22:12:14 ·
1269 阅读 ·
0 评论