倍增
keyboarder_zsq
你所认为的极限,其实是别人的起点。
展开
-
Codeforces 587C【树上倍增】
题意: 求树上两点路径中的前 a(<=10) 小的点权值。 思路: 类似LCA倍增算法来存储 i -> 2^j 路上的 前(<=10)小个 的点权值。 然后要写一个权值合并>>> 具体求 u->v 的话,就是先分别计算 {u->LCA} 和 {v->(LCA-1)} (减1是LCA会重叠), 然后再合并,输出答案。#include<iostream> #include<cstdio> #i原创 2017-08-12 09:31:38 · 598 阅读 · 0 评论 -
Codeforces 739B【树上倍增+差分】
思路: 先膜一发,真是羡慕施老板不知道差分也会自己创造差分的能力。 差分(这里的小差分): 比如你要算一棵树上 u->v 路径上的次数, v是 u 子树上的一个点, 算一棵树上 u->v 路径上的次数 就相当于算每个节点的次数吧, 对于每一对u, v (u -> v)的,用C[i]计数,可以C[fa[ u ]]–, C[fa[ v ]]++, 然后跑一下DFS,统计次数,具体处理就是对于每原创 2017-08-09 22:39:04 · 679 阅读 · 0 评论