Educational Codeforces Round 2 E. Lomsat gelral(启发式合并map)
来源:互联网 发布:www.gvlib video.php 编辑:程序博客网 时间:2024/06/06 04:02
题目链接
题意:给你一个树,然后每个节点有一个颜色,然后问你每个节点为子树的颜色出现最多的,权重和,权重是颜色值。
解法:把小的map合并到大的map里面,(新姿势),官方题解,说这个很有用耶
官方题解
#include<bits/stdc++.h>using namespace std;#define pb push_back#define LL long longconst int maxn=100002;const int inf=1<<28;vector<int> E[maxn*2];map<int,int> H[maxn];map<int,int>::iterator it;int color[maxn],id[maxn];LL cnt[maxn],ans[maxn],sum[maxn];void Merge(int&x,int y) { if(H[x].size()<H[y].size())swap(x,y); for(it=H[y].begin(); it!=H[y].end(); it++) { H[x][it->first]+=it->second; if(cnt[x]<H[x][it->first]){ cnt[x]=H[x][it->first]; ans[x]=it->first; } else if(cnt[x]==H[x][it->first]){ ans[x]+=it->first; } }}void dfs(int x,int fa) { for(int i=0; i<E[x].size(); i++) { if(E[x][i]==fa)continue; dfs(E[x][i],x); Merge(id[x],id[E[x][i]]); } sum[x]=ans[id[x]];}int main() { int n; scanf("%d",&n); for(int i=1; i<=n; i++) { scanf("%d",&color[i]); id[i]=i; H[i][color[i]]=1; cnt[i]=1; ans[i]=color[i]; } for(int i=1; i<n; i++) { int x,y; scanf("%d%d",&x,&y); E[x].pb(y); E[y].pb(x); } dfs(1,-1); for(int i=1;i<=n;i++){ printf("%lld ",sum[i]); } return 0;}
0 0
- Educational Codeforces Round 2 E Lomsat gelral(启发式合并)
- Educational Codeforces Round 2 E. Lomsat gelral(启发式合并map)
- Educational Codeforces Round 2 E. Lomsat gelral(启发式合并)
- Educational Codeforces Round 2 E - Lomsat gelral(树形dp+启发式合并)
- Codeforces 600E Lomsat gelral(启发式合并)
- CodeForces 600E Lomsat gelral(树形dp+启发式合并)
- Codeforces 600E Lomsat gelral (启发式合并)
- Codeforces 600E :Lomsat gelral(启发式合并)
- Educational Codeforces Round 2 E.Lomsat gelral(树形dp)
- 【Educational Codeforces Round 2E】【STL-map 启发式合并 or 线段树动态开节点 】Lomsat gelral 一棵树每点一个颜色问每个节点子树的颜色众数之和
- Codeforces 600E Lomsat gelral 树上启发式合并
- Codeforces 600E. Lomsat gelral(树上启发式合并)
- codeforces 600E. Lomsat gelral [dsu on tree(树上启发式合并)]
- Codeforces 600E Lomsat gelral
- codeforces 660E Lomsat gelral
- Codeforces 600E Lomsat gelral
- codeforces600E Lomsat gelral -- 树上启发式合并
- codeforces 600E. Lomsat gelral(教育场 树形dp)
- 一位休闲游戏制作人对数值策划的定义
- TI BLE CC2541协议栈数据加密与解密功能
- .NET学习(四)数据源控件SqlDataSource的使用
- XMPP实现登陆注销功能
- 三位数排列
- Educational Codeforces Round 2 E. Lomsat gelral(启发式合并map)
- java实现斐波那序列
- Hadoop日志
- android中让通知栏和标题栏的颜色一样
- 自定义NavgationBar返回按钮(Swift & OC)
- XMPP框架的分析、导入及问题解决
- 结构体内部的成员是何时分配内存空间的?
- CKEditor图片上传实现(spring mvc)
- 自定义view之雷达扫描