cf1060 E. Sergey and Subway(树形dp)
2022/1/15 6:03:42
本文主要是介绍cf1060 E. Sergey and Subway(树形dp),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
题意:
给定一棵树,然后在所有有相同邻点的点对之间连边。新连的边不能用于判断相邻。求所有点对的距离和。
思路:
法一:烦人的树形dp。维护子树中与根的距离为奇数的点数和距离为偶数的点数。
#include <bits/stdc++.h> using namespace std; using ll = long long; const int N = 2e5 + 5, M = 4e5 + 5; int h[N], e[M], ne[M], idx; void add(int a, int b) { e[++idx] = b, ne[idx] = h[a], h[a] = idx; } ll res[N], siz1[N], siz0[N], sum1[N], sum0[N]; void dfs(int u, int fa) { siz0[u] = 1; for(int i = h[u]; i; i = ne[i]) { int v = e[i]; if(v == fa) continue; dfs(v, u); res[u] += sum0[u]/2 * siz1[v] + (sum1[v]+siz1[v])/2 * (siz0[u]-1) + (sum1[u]+siz1[u])/2 * siz0[v] + sum0[v]/2 * siz1[u] + (sum1[u]+siz1[u])/2 * siz1[v] + (sum1[v]+siz1[v])/2 * siz1[u] + sum0[u]/2 * siz0[v] + sum0[v]/2 * (siz0[u]-1) + siz0[v] * (siz0[u]-1); siz1[u] += siz0[v], siz0[u] += siz1[v]; sum1[u] += siz0[v] + sum0[v], sum0[u] += siz1[v] + sum1[v]; } res[u] += sum0[u]/2 + (sum1[u]+siz1[u])/2; } signed main() { int n; scanf("%d", &n); for(int i = 1, a, b; i < n; i++) scanf("%d%d", &a, &b), add(a, b), add(b, a); dfs(1, 0); ll ans = 0; for(int i = 1; i <= n; i++) ans += res[i]; printf("%lld", ans); return 0; }
法二:不加边之前的答案为 \(\sum size_u(n-size_u)\) 。
加边后,距离为偶数的点对距离减半;奇数的减半后+1。
不加边前,ans=偶数层到偶数层的点对距离和(X)+奇数层到奇数层的点对距离和(Y)+奇数到偶数的点对距离和(Z) 。X和Y必然为偶数,缩小一半;Z的数量为深度为奇的点数×深度为偶的点数
ll siz[N], cnt; void dfs(int u, int fa, int dep) { siz[u] = 1; if(dep % 2) cnt++; for(int i = h[u]; i; i = ne[i]) { int v = e[i]; if(v == fa) continue; dfs(v, u, dep + 1); siz[u] += siz[v]; } } ll ans = 0; for(int i = 1; i <= n; i++) ans += siz[i] * (n - siz[i]); ans += cnt * (n - cnt); ans /= 2; printf("%lld", ans);
这篇关于cf1060 E. Sergey and Subway(树形dp)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-12深入理解 ECMAScript 2024 新特性:Map.groupBy() 分组操作
- 2025-01-11国产医疗级心电ECG采集处理模块
- 2025-01-10Rakuten 乐天积分系统从 Cassandra 到 TiDB 的选型与实战
- 2025-01-09CMS内容管理系统是什么?如何选择适合你的平台?
- 2025-01-08CCPM如何缩短项目周期并降低风险?
- 2025-01-08Omnivore 替代品 Readeck 安装与使用教程
- 2025-01-07Cursor 收费太贵?3分钟教你接入超低价 DeepSeek-V3,代码质量逼近 Claude 3.5
- 2025-01-06PingCAP 连续两年入选 Gartner 云数据库管理系统魔力象限“荣誉提及”
- 2025-01-05Easysearch 可搜索快照功能,看这篇就够了
- 2025-01-04BOT+EPC模式在基础设施项目中的应用与优势