首页 > TAG信息列表 > Lomsat
Codeforces600E Lomsat gelral
Codeforces600E Lomsat gelral 题目链接 点我跳转 题目大意 一棵树,1号节点为根,每个结点都有一个颜色,第i个节点的颜色为ci。 如果一种颜色在以x为根的子树内出现次数最多(可以不唯一),称其在以x为根的子树中占主导地位。 你的任务是对于每一个i∈[1,n],求出以i为根的子树中,占主导地位的CF600E Lomsat gelral(树上启发式合并)
LINK Code: #include <iostream> #include <cstring> #include <algorithm> #define int long long typedef long long LL; using namespace std; const int N = 1e5+10,M=2*N; int n,m; int h[N],e[M],ne[M],idx; void add(int a,int b){ ne[idx]=h[aCF600E Lomsat gelral
题意:给你一棵有$n$个节点的树,每个节点有点权$val$,求每个点子树点权众数之和 $n\le10^5 $ 分析: 由于不带修改,$n$范围相对较小,不难想到将子树转化为DFS序用莫队解决 每一次$DFS$到点$u$时,对应的询问的左端点即为当前DFS序,在以$u$为根的$DFS$递归结束后,右端点即为结束后的DFCF600E Lomsat gelral
题目链接:https://www.luogu.com.cn/problem/CF600E 思路: 先处理出那些点是重儿子 然后对于每一个结点 先处理完轻儿子 再暴力清除掉 然后再处理重儿子 处理之后不用清除,回到根结点 再让处理根节点,让根节点带上重儿子的信息再跑一遍轻儿子的信息得到答案 暴力的话 每个点跑2n次CF600E Lomsat gelral
题意 给你一棵有\(n\)个点的树 $ n \leq 10^5$,树上每个节点都有一种颜色 \(a_i\),让你求每个点子树出现最多的颜色的编号(多个就求和) 思路 考虑暴力怎么写:遍历每个节点—把子树中的所有颜色暴力统计出来算答案—清空—继续递归 这肯定是\(O(n^2)\)的。 \(dsu \space on \space tree\)CF600E Lomsat gelral(线段树合并)
link 题目大意:给以1为根的一棵树,求树上每个点子树中出现次数最多的权值(如果有多个就求他们的和) 对每个点开一个线段树维护子树内权值的桶,dfs时候线段树合并就行了。 因为最后线段树一共插入最多 \(O(n\log n)\) 个节点,每个节点最多会被合并一次,所以复杂度是 \(O(n\log n)\) 的。 #i