
树链剖分
二分抄代码
去了18ec没资格去19ec的反向训练选手
展开
-
C-A National Pandemic 2020牛客暑期多校训练营(第七场)
https://ac.nowcoder.com/acm/contest/5672/C比赛的时候又想用对询问分块nsqrt(n)logn做。。。。还好被队友叫住了,被队友用点分树nlogn过了然而我不会点分树,看了题解发现树链剖分巨简单我们发现一个1操作对其他的点增加的是w-dep[x]-dep[y]+2*dep[lca],那么可以把w-dep[x]单独拿出来求和sum,对于3操作,每个点的值就是sum-num*dep[y]+2*dep[lca],num为1操作的次数,这个2*dep[lca]可以原创 2020-08-05 15:39:39 · 163 阅读 · 0 评论 -
Codeforces 1009 F
这道题我是真的服了。好不容易想起来启发式合并,然后顺着思路想到了一个清奇的解法,对于每个点开一个map,m[u](dep[u],num)存的是u的子树中,深度为dep[u]的点的个数,这样对于每个点的合并,先直接找到包含最长链的那个子节点v,m[u]=m[v],因为最长链就代表了又更多的dep值,而且这个是一个指针操作,复杂度是O(1)的,(没有证实,以前好像挺学长讲过这个),map里存的东西...原创 2018-07-16 21:27:52 · 477 阅读 · 0 评论 -
2019南昌邀请赛网络赛 J. Distance on the tree
最基本的离线询问,然后跑数据结构。此题因为是求边的数量,但是我的树链剖分模板是给点加值和求和求最大值,于是我们在树上每条边中间加一个点,那么这个点的权值就是边的权值。对边排序,对询问排序,k从小到大处理询问,每次把当前询问小的边加到线段树的点里面,然后求路径上有多少个满足条件的边就是树链剖分后线段树idx[u]到idx[v]的权值和了。队友状态不好,丢给我这个只写过一道模板题树链剖分的...原创 2019-04-21 00:22:14 · 512 阅读 · 0 评论 -
gym101630 Laminar Family
https://codeforces.com/gym/101630/attachments一开始写了个假算法没了。。。然后发现假了以后没写完。先按照路径长度排序,路径长的先染色。问题的关键是每段区间染色前,这段区间必须只有一种颜色。我们可以对线段树每一段区间维护一个左端点颜色,右端点颜色和颜色段数。对于树链剖分,我们先把路径对应的区间全部存在vector里,然后按照线段树中的节...原创 2019-10-06 19:25:27 · 195 阅读 · 0 评论