树学
Zimba_
这个作者很懒,什么都没留下…
展开
-
[2020WC Day2]F.采蘑菇的克拉莉丝(子树和查询、轻重儿子思想)
题意:给定一棵nnn个点,n−1n-1n−1条边的带边权的无向图,图上的点可以长蘑菇。克拉莉丝起始点在点111。接着发生qqq次事件。事件有两种:1 v x1\;v\;x1vx表示在点vvv上新长了xxx个蘑菇。2 v2\;v2v表示克拉莉丝的起始位置变成了点vvv。在每个事件后,克拉莉丝想要知道她收集完所有蘑菇的代价。对于任意一个蘑菇,收集它的代价是这个蘑菇所在点到克拉莉丝起始点路径上最靠近克拉莉丝起始点的边的边权。数据范围:1≤n≤1061\leq n\leq 10^{6}1≤n原创 2020-11-22 18:46:56 · 191 阅读 · 3 评论 -
[ACM-ICPC 2018 沈阳赛区网络预赛] J.Ka Chang (分块+dfs序)
题目链接题意:给定一棵nnn个点的树,有两种操作:1.1.1.给所有深度为LLL的点权值加上XXX。2.2.2.查询根为XXX的子树的点权和。给出qqq次操作,对于每次操作222,输出结果。(1≤n,q≤105)(1\leq n,q \leq 10^{5})(1≤n,q≤105)思路:如果只有操作111,我们可以维护bfsbfsbfs序,这样同深度的点一定在一段连续的区间中。如果只有操作222,我们可以维护dfsdfsdfs序,这样某个点的子树一定在一段连续的区间中。但是二者不可兼得,我原创 2020-09-17 15:13:29 · 87 阅读 · 0 评论 -
[COCI]Lampice (二分+树分治+字符串哈希)
题意:给定一棵nnn个结点的树,每个结点有一个小写字母a—za—za—z。要求一条最长的简单路径,满足沿路径得到的字符串是回文串。(1≤n≤1051\leq n \leq10^{5}1≤n≤105)思路:首先要考虑的问题是,用什么方式去判断树上的一条路径是不是回文串。这里采用的方法是字符串哈希。举个例子,给a—za—za—z每个字母都自己(我命由我不由天)设置一个哈希值,再设置一个basebasebase值和模数MMM,字符串abbcbbaabbcbbaabbcbba的哈希值就是H(a)+H(b原创 2020-09-14 12:30:13 · 321 阅读 · 0 评论 -
[CodeForces - 208E] Blood Cousins(k代兄弟问题)
题目链接加强版例题(还没写)题意:给定一棵nnn个结点的树。给出mmm次询问,每次询问给出xxx和kkk,问xxx有多少个kkk代兄弟。(两个点互为kkk代兄弟的定义是他们的kkk级祖先相同)1≤n,m≤1051\leq n,m \leq 10^{5}1≤n,m≤105做法:把所有点以深度为第一关键字,dfsdfsdfs序为第二关键字排序。然后kkk代兄弟一定是在一段连续的区间中的,这样就转化成区间问题了。这题的话,排好序后,对询问点二分出左右边界,就可以找到它的所有kkk代兄弟了。代码:原创 2020-08-24 20:28:49 · 132 阅读 · 0 评论