树链剖分
lahlah_
沉浸 尊重
展开
-
[luogu P5305] [GXOI/GZOI2019]旧词
[luogu P5305] [GXOI/GZOI2019]旧词 题解 其实和这题差不多 首先还是先拆询问 但是对于每个点,维护的权值需要差分一下 假设当前点是u 则当前点要加的点是dep[u]k−(dep[u]−1)kdep[u]^k-(dep[u]-1)^kdep[u]k−(dep[u]−1)k 这样询问到根的路径的时候就可以加起来变成dep[u]kdep[u]^kdep[u]k 然后就和那题一样了 // luogu-judger-enable-o2 #include<bits/stdc++.h&g原创 2020-10-18 22:07:44 · 108 阅读 · 0 评论 -
[luogu P4211] [LNOI2014]LCA
[luogu P4211] [LNOI2014]LCA 题解 首先考虑把询问拆成两个前缀和 然后对于把把每个点一次插入,每次把那个点到根的所有点权值+1 询问就是z到根的路径权值和 树剖一下就做完了 #include<bits/stdc++.h> #define mod 201314 #define ll long long using namespace std; const int N = 530005; const int INF = 9999999; struct A{ int原创 2020-10-18 21:59:01 · 375 阅读 · 0 评论 -
luogu P5305 [GXOI/GZOI2019]旧词
luogu P5305 [GXOI/GZOI2019]旧词 题意 一开始给出一棵树和k 一共有若干询问 就是每次给出x,yx,yx,y求 ∑depth(lca(i,y))k (i<=x)\sum depth(lca(i,y))^k \ \ (i <= x)∑depth(lca(i,y))k (i<=x) 首先这题就是l...原创 2019-09-03 20:42:21 · 138 阅读 · 0 评论