首页 > TAG信息列表 > gelral

Educational Codeforces Round 2 | E. Lomsat gelral

E. Lomsat gelral CF600E.Lomsat gelral 题意 有一棵 \(n\) 个结点的以 \(1\) 号结点为根的有根树。 每个结点都有一个颜色,颜色是以编号表示的, \(i\) 号结点的颜色编号为 \(c_i\)。 如果一种颜色在以 \(x\) 为根的子树内出现次数最多,称其在以 \(x\) 为根的子树中占主导地位

$\text{CF600E Lomsat gelral}$

两种算法: 线段树合并 \(\text{DSU on tree}\) #include <bits/stdc++.h> using namespace std; const int N = 1e5 + 5; using LL = long long; namespace SegmentTree_Combination { namespace Sg { #define mid (l + r >> 1) struct Node {

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[a

codeforces 600 E. Lomsat gelral(树上启发式合并)

题目链接 题意: 树上每个结点有一个颜色,统计树上每个结点的子树上出现次数最多的颜色和。 思路: 树上启发式合并,将原本的\(O(n^2)\)复杂度变为\(O(n*logn)\),OIwiki的复杂度证明。 code: #include <iostream> #include <cstdio> #include <string> #include <cstring> #include <algo

CF600E Lomsat gelral 权值线段树题解

link 前言 其实就是一道线段树合并的板子,因为机房要求写就写了。 题意 问 \(1\sim n\) 的子树中各个子树的众数和。 分析 其实,一般如果要求各个子树的某个东西,我们一般都是考虑 线段树合并/dsu on tree/dfn+其他数据结构(可能还有其他做法,只不过我太菜了不会),所以我才会说显然。 考

CF600E Lomsat gelral

题意:给你一棵有$n$个节点的树,每个节点有点权$val$,求每个点子树点权众数之和 $n\le10^5 $ 分析: 由于不带修改,$n$范围相对较小,不难想到将子树转化为DFS序用莫队解决 每一次$DFS$到点$u$时,对应的询问的左端点即为当前DFS序,在以$u$为根的$DFS$递归结束后,右端点即为结束后的DF

「题解」 [CF600E] Lomsat gelral

Problem Link 题意: 给你一个以 \(1\) 为根节点的有根树,每个节点有一个权值。求以每一个节点为根的子树的权值众数的和。 Solution \(\operatorname{Algorithm 1}\) : dfs序 + 莫队 我们可以将问题转化一下,求出每个节点的 \(\operatorname{dfs}\) 序,将每个子树转化成序列上得一段区

CF600E Lomsat gelral

题目链接:https://www.luogu.com.cn/problem/CF600E 思路: 先处理出那些点是重儿子  然后对于每一个结点 先处理完轻儿子 再暴力清除掉 然后再处理重儿子 处理之后不用清除,回到根结点 再让处理根节点,让根节点带上重儿子的信息再跑一遍轻儿子的信息得到答案 暴力的话 每个点跑2n次

CodeForces 600E Lomsat gelral(线段树合并)

题目链接:http://codeforces.com/problemset/problem/600/E You are given a rooted tree with root in vertex 1. Each vertex is coloured in some colour. Let's call colour c dominating in the subtree of vertex v if there are no other colours that appear in the

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