![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
树上差分
Neo__Z
这个作者很懒,什么都没留下…
展开
-
NOIP2016 T2 天天爱跑步
解题报告:我们思考一下从x到y的路径,这个可以拆成从x到lca的路径和从lca到y的路径,这个很明显。 如果一个点i在从x到lca 的路径可以检测到的话,那么就有deep[i]+w[i]=deep[x]。 如果一个点i在从lca到y的路径上可以检测到的话,那么就有deep[i]-w[i]=deep[y]-t(t表示x到y的路径长度)。 对于每个点i,我们已知deep[i],w[i],只需要在路径上标原创 2017-07-28 11:49:31 · 355 阅读 · 0 评论 -
NOIP2015 T6 运输计划 【树上差分】
解题思路:这道题空找一条边不好找,注意到他是使最大的最小,所以不妨考虑二分答案。 设二分的答案为t,则对于每一条len>td的链,必须要修改其上的一条边。如果共要修改m条链,那么修改的那条边一定是这m条链的交集,那么问题就变成了求m条链的交集,看最长减去交集中最长的一条边是否小于t; 那如何求交集呢?可以用树上差分: 设tag[v]表示m条链经过(v,fa[v])这条边的次数,对于每条链(x,原创 2017-10-20 21:22:03 · 290 阅读 · 0 评论 -
loj#2322. 「清华集训 2017」Hello world!【分块+并查集+树状数组】
传送门 解题思路: 考虑对步数分块,对于步数大于S的直接暴力修改查询,步数小于S的建S棵树,第i棵树x先第i个祖先连边,用并查集维护连续是1的一段,树状数组维护查询。 这样修改是O(Slogn)O(Slogn)O(Slogn)的,查询是O(logn)O(logn)O(logn),不知有没有更优秀的复杂度。 #include<iostream> #include<alg...原创 2018-05-31 08:59:22 · 966 阅读 · 0 评论