树上启发合并
.
做一只大熊猫
让优秀成为一种习惯!
展开
-
Strange Memory Gym - 102832F(树上启发式合并+二进制拆分算贡献)
题目链接题意给我们一颗 n 个节点的树,每个节点有一个权值 a [i], 现在让我们求:树上点对 i,j 满足下面的公式的个数思路我们考虑有树上启发合并去暴力求解答案 O (nlogn), 但是我们发现直接这样做难以维护异或和信息,这个时候我们需要维护可以考虑对每节点的编号设为 i,我们对 i 每一个二进制位统计贡献,复杂度变为 20*nlog (n) 我们需要一个数组 dp [val][0/1][0~20], 第一维表示当 ai 异或 alca(i,j)=val==ajai 异或原创 2021-11-02 10:05:19 · 81 阅读 · 0 评论 -
树上启发式合并(dsu on tree) ——模板
讲解讲解传送门复杂度证明例题传送门代码#include <bits/stdc++.h>using namespace std;const int N = 2e5 + 5;int n;// g[u]: 存储与 u 相邻的结点vector<int> g[N];// sz: 子树大小// big: 重儿子// col: 结点颜色// L[u]: 结点 u 的 DFS 序// R[u]: 结点 u 子树中结点的 DFS 序的最大值// Node[i原创 2021-04-16 10:05:27 · 130 阅读 · 0 评论