摘要:
给定一棵树,初始时树为空操作1,往某个结点注水,那么该结点的子树都注满了水操作2,将某个结点的水放空,那么该结点的父亲的水也就放空了操作3,询问某个点是否有水我们将树进行dfs, 生成in[u], 访问结点u的时间戳,out[u],离开结点u的时间戳每个结点的in值对应在线段树中的区间的一点那么对于... 阅读全文
摘要:
这题同样是要将边权下放到点这题要注意的是negate询问,是将权值取反,因为是区间修改,要用到laze标记但是要注意的是,如果有标记下放的时候,如果下边已经有标记了, 那么就是取反,再取反, 所以只要将标记去除就行了就因为这个wa了好几发同时,线段树也要维护一个最小值,因为取反之后,最小值就变成最大... 阅读全文
摘要:
树链剖分后要处理的是边的权值,而不是点的权值,但是只要边权下放到点,就可以了如图但是问题是,求图4->5路径的权值之和, 那么就会把点3给算进去那么就要减去,或者干脆不加进去有两种方法 1 #include 2 #include 3 #include 4 #include 5 #i... 阅读全文
摘要:
bestcoder round#45 1003 题,给定两个点,要我们求这两个点的树上路径所经过的点的权值是否出现过奇数次。如果是一般人,那么就是用lca求树上路径,然后判断是否出现过奇数次(用异或),高手就不这么做了,直接树链剖分。为什么不能用lca,因为如果有树退化成链,那么每次询问的复杂度是O... 阅读全文