题目传送门 题目大意:给出一颗树,根节点是0,有两种操作,一是修改某个节点的value,二是查询,从根节点出发,经过 x 节点的路径的最大值。 思路:用树状数组写发现还是有些麻烦,最后用线段树了。 其实这道题的查询,就是查询从根节点到x节点+x节点走下去的路径的最大值,这样会发现,其实就是查询包括x ...
分类:
其他好文 时间:
2018-10-27 21:17:43
阅读次数:
208
Apple Tree Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 36442 Accepted: 10894 Description There is an apple tree outside of kaka's house ...
分类:
移动开发 时间:
2018-10-27 18:44:41
阅读次数:
181
#include #include #include #include #include #include #include #include #include #include #include #include #include #define enter puts("") using name... ...
分类:
其他好文 时间:
2018-10-26 19:47:13
阅读次数:
156
嘟嘟嘟 好题,好题…… 看这个修改和询问,就知道要么是求完dfs序后线段树维护,要么是树剖。又因为这道题都是子树的操作,没有链上的,所以线段树就够了。 然而重点不是这个。这道题最麻烦的是线段树pushdown时对于每一个节点打的标记都不一样,因为每一条边上的能力值不一样。这也是这道题最巧妙的一点:我 ...
分类:
其他好文 时间:
2018-10-24 22:14:10
阅读次数:
210
原文链接 https://www.cnblogs.com/cly none/p/9845046.html 题意:给出一棵$n$个结点的树,在第$i$个结点上有$a_i$个权值为$v_i$的物品。$1$号结点是根结点。你需要选出若干个物品(设选了$t$个),满足: 如果选了结点$i$上的物品,那么$i ...
分类:
移动开发 时间:
2018-10-24 20:08:29
阅读次数:
184
(仅作备忘) dfs序是dfs过程中对于某节点进入这个节点的子树和离开子树的顺序 满足每个节点都会在dfs序上出现恰好两次 任意子树的dfs序都是连续的 欧拉序是dfs过程中经过节点的顺序 每个节点至少出现一次(事实上出现这个节点的度次,根节点额外一次) 有时候用来配合稀疏表求最近公共祖先 dfn序 ...
分类:
其他好文 时间:
2018-10-21 19:34:33
阅读次数:
1023
如果是求和就很好做了... 不是求和也无伤大雅.... 一维太难限制条件了,考虑二维限制 一维$dfs$序,一维$dep$序 询问$(x, k)$对应着在$dfs$上查$[dfn[x], dfn[x] + sz[x] - 1]$,在$dep$序上查$[dep[x], dep[x] + k]$ 这样子 ...
分类:
其他好文 时间:
2018-10-19 23:46:18
阅读次数:
176
目的 解决树上多组关于某些点的询问,复杂度是关于每次询问点的个数的和的 思路 把每次询问的点和某些lca(即关键点)浓缩到虚树上,两点之间的连边包含原树中两点间路径的信息,再在虚树上暴力(?)处理 做法 先按照dfs序排序,这样可以保证做到不在某点子树中的点时,它的子树中的点都已经做完了 用一个栈来 ...
分类:
其他好文 时间:
2018-10-18 18:06:16
阅读次数:
105
注意 求子树时,要用子树dfs序连续这个特性,但是 不能用 如下方法(sub表示x的子树中最大的dfs序): 因为这样会无法处理叶子节点(直接返回了) 最好的办法是用size,直接算出来 细节比较多,都在注释里 变量名重复真的很可怕。。。调了半天都没发现 ...
分类:
其他好文 时间:
2018-10-14 16:29:50
阅读次数:
186