codeforces 600E 线段树合并
题意:给你一棵有 n n 个点的树 (n\leq10^5) ( n ≤ 1 0 5 ) ,树上每个节点都有一种颜色 ci(ci\leq n) c i ( c i ≤ n ) ,让你求每个点子树出现最多的颜色的 颜色编号 的和 权值线段维护一下出现最多的数字即可 #include<bits/stdc++.h> using namespace std; #define rep(i,a,b) for(int i=(a);i<=(b);i++) #define repp(i,a,b) for(int i=(a);i>=(b);--i) #define ll long long #define see(x) (cerr<<(#x)<<'='<<(x)<<endl) #define inf 0x3f3f3f3f #define CLR(A,v) memset(A,v,sizeof A) ////////////////////////////////// const int N=2e6+10; ll sum[N<<2],t[N<<2],anss[N]; int lson[N<<2],rson[N<<2],ncnt,pos,head[N],c[N],n,T[N]; void up(int pos) { if(sum[lson[pos]]>sum[rson[pos]]) { sum[pos]