![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
DSU on tree
moomhxy
你若是天才,我便是疯子
展开
-
CF600E Lomsat gelral 树上启发式合并
题目链接:https://www.luogu.com.cn/problem/CF600E题意:一棵树有n个结点,每个结点都是一种颜色,每个颜色有一个编号,求树中每个子树的最多的颜色编号的和。思路:我们首先处理出每个结点的重链,然后每次先处理轻链,计算贡献,然后再消去贡献,当最后处理到重链时保留贡献,就这样启发式地合并,可以将复杂度降到nlogn。#include<bits/stdc++.h>using namespace std;typedef long long ll;#d.原创 2020-06-22 21:29:46 · 215 阅读 · 0 评论 -
牛客网 月出皎兮,佼人僚兮。 树上启发式合并
题目链接:https://ac.nowcoder.com/acm/contest/6037/F题意:给一棵树有n个节点,根节点为1。每个点有一个颜色,并且有一个权值,为当前这个节点颜色的数量。对每个点输出,当前点以及子树中的最大匹配数。当且仅当颜色不同可以匹配。思路:记录每个子树的所有颜色数量sum和以及最多的那个种类的颜色个数max,如果max大于sum/2,那么说明最多只能有sum - max对能够匹配,否则的话说明可以将其都两两配对。#include<bits/stdc++.h&g原创 2020-06-22 21:23:53 · 196 阅读 · 0 评论 -
洛谷U41492 树上数颜色 树上启发式合并
题目链接:https://www.luogu.com.cn/problem/U41492题意:给一棵根为1的树,每次询问子树颜色种类数思路:树上启发式合并,每次计算时如果是第一次出现就计算贡献,轻链的话要消除贡献#include<bits/stdc++.h>using namespace std;typedef long long ll;#define fi first#define se second#define ls rt << 1#define rs .原创 2020-06-22 21:17:31 · 347 阅读 · 0 评论