[CF600E]Lomsat gelral
题意翻译
一棵树有n个结点,每个结点都是一种颜色,每个颜色有一个编号,求树中每个子树的最多的颜色编号的和。
线段树合并板子题,没啥难度,注意开long long
不过这题$dsu$ $on$ $tree$确实更快
代码:
#include<iostream>
#include<cstdio>
#define ls ch[node][0]
#define rs ch[node][1]
#define M 100010
using namespace std;
int n,m,num,cnt;
int head[M],rt[M],co[M];
int ch[M<<][],v1[M<<];
long long v2[M<<],ans[M];
struct point{int to,next;}e[M<<];
void add(int from,int to) {
e[++num].next=head[from];
e[num].to=to;
head[from]=num;
}
void update(int node) {
if(v1[ls]==v1[rs]) {
v1[node]=v1[ls];v2[node]=v2[ls]+v2[rs];
}
else{
if(v1[ls]>v1[rs]) v1[node]=v1[ls],v2[node]=v2[ls];
else v1[node]=v1[rs],v2[node]=v2[rs];
}
}
void insert(int &node,int l,int r,int x) {
if(!node) node=++cnt;
if(l==r) {
v1[node]=,v2[node]=x;return;
}int mid=(l+r)/;
if(x<=mid) insert(ls,l,mid,x);
else insert(rs,mid+,r,x);
update(node);
}
int merge(int x,int y,int l,int r) {
if(!x||!y) return x+y;
int node=++cnt;
if(l==r) {
v1[node]=v1[x]+v1[y];v2[node]=l;return node;
}
int mid=(l+r)/;
ch[node][]=merge(ch[x][],ch[y][],l,mid);
ch[node][]=merge(ch[x][],ch[y][],mid+,r);
update(node);return node;
}
void dfs(int x,int fa) {
insert(rt[x],,n,co[x]);
for(int i=head[x];i;i=e[i].next) {
int to=e[i].to;
if(to==fa) continue;
dfs(to,x);
rt[x]=merge(rt[x],rt[to],,n);
}
ans[x]=v2[rt[x]];
}
int main() {
scanf("%d",&n);
for(int i=;i<=n;i++) scanf("%d",&co[i]);
for(int i=;i<n;i++) {
int x,y;scanf("%d%d",&x,&y);
add(x,y),add(y,x);
}
dfs(,);
for(int i=;i<=n;i++) printf("%lld ",ans[i]);
return ;
}
[CF600E]Lomsat gelral的更多相关文章
- CF600E Lomsat gelral 和 CF741D Dokhtar-kosh paths
Lomsat gelral 一棵以\(1\)为根的树有\(n\)个结点,每个结点都有一种颜色,每个颜色有一个编号,求树中每个子树的最多的颜色编号(若有数量一样的,则求编号和). \(n \le 10^ ...
- CF600E Lomsat gelral 【线段树合并】
题目链接 CF600E 题解 容易想到就是线段树合并,维护每个权值区间出现的最大值以及最大值位置之和即可 对于每个节点合并一下两个子节点的信息 要注意叶子节点信息的合并和非叶节点信息的合并是不一样的 ...
- CF600E Lomsat gelral(dsu on tree)
dsu on tree跟冰茶祭有什么关系啊喂 dsu on tree的模板题 思想与解题过程 类似树链剖分的思路 先统计轻儿子的贡献,再统计重儿子的贡献,得出当前节点的答案后再减去轻儿子对答案的贡献 ...
- CF600E:Lomsat gelral(线段树合并)
Description 一棵树有n个结点,每个结点都是一种颜色,每个颜色有一个编号,求树中每个子树的最多的颜色编号的和. Input 第一行一个$n$.第二行$n$个数字是$c[i]$.后面$n-1$ ...
- dsu on tree(CF600E Lomsat gelral)
题意 一棵树有n个结点,每个结点都是一种颜色,每个颜色有一个编号,求树中每个子树的最多的颜色编号的和. dsu on tree 用来解决子树问题 好像不能带修改?? 暴力做这个题,就是每次扫一遍子树统 ...
- cf600E. Lomsat gelral(dsu on tree)
题意 题目链接 给出一个树,求出每个节点的子树中出现次数最多的颜色的编号和 Sol dsu on tree的裸题. 一会儿好好总结总结qwq #include<bits/stdc++.h> ...
- CF600E Lomsat gelral——线段树合并/dsu on tree
题目描述 一棵树有$n$个结点,每个结点都是一种颜色,每个颜色有一个编号,求树中每个子树的最多的颜色编号的和. 这个题意是真的窒息...具体意思是说,每个节点有一个颜色,你要找的是每个子树中颜色的众数 ...
- CF600E Lomsat gelral (启发式合并)
You are given a rooted tree with root in vertex 1. Each vertex is coloured in some colour. Let's cal ...
- CF600E Lomsat gelral 树上启发式合并
题目描述 有一棵 \(n\) 个结点的以 \(1\) 号结点为根的有根树. 每个结点都有一个颜色,颜色是以编号表示的, \(i\) 号结点的颜色编号为 \(c_i\). 如果一种颜色在以 \(x\) ...
随机推荐
- 浏览器对js运行时间的限制
浏览器对js的运行时间进行了限制 1.调用栈尺寸限制 目前大部分的主流浏览器的调用栈尺寸都在10000以上.超过这个尺寸就会报栈溢出的错误 2.长时间脚本限制 浏览器记录一个脚本的运行时间,一旦达到这 ...
- java.util.ConcurrentModificationException 多线程访问ArrayList引起
http://blog.csdn.net/androiddevelop/article/details/21509345 Java ConcurrentModificationException ...
- 【BZOJ2164】采矿 树链剖分+线段树维护DP
[BZOJ2164]采矿 Description 浩浩荡荡的cg大军发现了一座矿产资源极其丰富的城市,他们打算在这座城市实施新的采矿战略.这个城市可以看成一棵有n个节点的有根树,我们把每个节点用1到n ...
- 【BZOJ3678】wangxz与OJ Splay
[BZOJ3678]wangxz与OJ Description 某天,wangxz神犇来到了一个信息学在线评测系统(Online Judge).由于他是一位哲♂学的神犇,所以他不打算做题.他发现这些题 ...
- ScrollView 设置滚动是否可用
extends:http://stackoverflow.com/questions/5763304/disable-scrollview-programmatically , http://stac ...
- android 仿微信聊天界面,以及语音录制功能
extends:http://104zz.iteye.com/blog/1709840 本例为模仿微信聊天界面UI设计,文字发送以及语言录制UI. 1先看效果图: 第一:chat.xml设计 ...
- Spring源码学习之IOC实现原理(二)-ApplicationContext
一.Spring核心组件结构 总的来说Spring共有三个核心组件,分别为Core,Context,Bean.三大核心组件的协同工作主要表现在 :Bean是包装我们应用程序自定义对象Object的,O ...
- X-UA-Compatible也无法解决的IE11兼容问题
3月8日接到一位用户的电话,说写博客时编辑器显示不出来.浏览器用的是披着360外衣的IE11,编辑器用的是CuteEditor. 当时电脑上没安装IE11,用IE10测试正常,心想应该是一个手到擒来的 ...
- 在idea中为函数自动生成注释(解决注释无法出现形参的情况)
1 点击“File”-->“Settings”-->“Live Templates”打开如下对话框,点击右边绿色的加号,创建一个自定义的Template Group,如“Java” 2.选 ...
- angular $http服务详解
它是对原生XMLHttpRequest对象的简单封装, 这个方法会返回一个promise对象,具有sccess和error两个方法. 当然,我们也可以在响应返回时用then 方法来处理,会得到一个特殊 ...