当前位置: 首页 > news >正文

U41492 树上数颜色

U41492 树上数颜色

大意

给一棵有 \(200000\) 点的树,第 \(u\) 个节点,染了颜色 \(c[u]\),然后问

  1. 每个点子树内,颜色种类数。
  2. \(u\) 个节点子树内颜色为 \(x\) 的点有多少个。

思路

经典的启发式合并题目。

由于我们总是把小的合并到大的,对于节点 \(i\),每当它被移动一次(从集合 \(A\) 搬到 \(B\)),它所属的集合大小 \(S\) 必定满足:

\[S_{new} = |A| + |B| \]

因为是启发式合并,必有 \(|B| \ge |A|\),所以:

\[S_{new} \ge 2 \cdot |A| \ge 2 \cdot S_{old} \]

设节点 \(i\) 被移动了 \(k_i\) 次。

第 1 次移动后,所在集合大小 \(\ge 2^1\)
第 2 次移动后,所在集合大小 \(\ge 2^2\)
...
\(k_i\) 次移动后,所在集合大小 \(\ge 2^{k_i}\)

因为集合大小上限是全树节点总数 \(n\)

\[2^{k_i} \le n \]

两边取对数:

\[k_i \le \log_2 n \]

总代价是所有点移动次数之和:

\[\sum_{i=1}^{n} k_i \le \sum_{i=1}^{n} \log_2 n = n \log_2 n \]

代码

#include <cstdio>
#include <map>
#include <vector>
using namespace std;
const int N = 100000 + 10;
int n, c[N];
vector<int> g[N];
int ans[N];
map<int, int> mp[N];void dfs(int u, int p){mp[u][c[u]] = 1;for(int i = 0;i < g[u].size();i ++){int v = g[u][i];if(v == p) continue;dfs(v, u);if(mp[v].size() > mp[u].size()){swap(mp[u], mp[v]);}for(map<int, int>::iterator it = mp[v].begin();it != mp[v].end();it ++){mp[u][it -> first] += it -> second;}mp[v].clear();}ans[u] = mp[u].size();
}int main() { scanf("%d", &n);for(int i = 2;i <= n;i ++){int u, v;scanf("%d%d", &u, &v);g[u].push_back(v);g[v].push_back(u);}for(int i = 1;i <= n;i ++){scanf("%d", &c[i]);}dfs(1, 1);for(int i = 1;i <= n;i ++){printf("%d\n", ans[i]);}return 0; 
}
http://www.jsqmd.com/news/392671/

相关文章:

  • 杰理之APP【篇】
  • P1505 [国家集训队] 旅游
  • 寒假学习
  • Open AI在AI人工智能领域的量子计算结合探索
  • Cassandra一致性模型深度剖析:最终一致性_强一致性_可调一致性,如何选择?
  • 接口测试基础概念
  • 阿里云短信与语音通知服务实战指南
  • 杰理之TWS配对方式【篇】
  • sql语句之union语句
  • Eureka在大数据消息队列中的服务注册应用
  • 复杂 PDF 文档怎么结构化?pdf-document-layout-analysis 搭建:从0到1避坑指南(附完整代码)
  • 对话管理在多轮对话AI应用中的关键技术
  • AI原生应用与微服务集成:解决业务痛点的良方
  • 杰理之广播式音响【篇】
  • 杰理之TWS耳机蓝牙版本【篇】
  • 传感器02-
  • 杰理之linein发射【篇】
  • 杰理之MIC发射【篇】
  • 《AI应用架构师揭秘:医疗AI伦理考量背后的实施策略真相》
  • 上百篇红薯笔记怎么自动化隐藏公开?影刀RPA如何批量操作"可见范围"权限设置
  • 欧拉函数
  • 网上C++新特性和STL等学习资料收集
  • 有限域下多项式求根与多项式分解
  • 一文搞定AI API申请收集
  • 分享一款Wordpress主题小散社区移动端
  • 2/18
  • P3384 【模板】重链剖分 / 树链剖分
  • 信息论与编码篇---RMSE
  • 信息论与编码篇---MAE
  • 信息论与编码篇---MSSIM