Codeforces Round #172 (Div. 1) C. Game on Tree(期望的线性性质)
题意是给出一棵有根树,每次等概率删除一个点以及以其为根的子树,问删完整棵树的期望步数。
暴力枚举方案显然不可,考虑期望的线性性质,将问题转化为删除每个点的期望步数再求和。一个点消失要么是选中了这个点的某个祖先(对这个点的期望没有贡献),要么是直接删除这个点。换句话说,一条链上每个点首先被删除的概率是相等的。设这个点的深度为dep,那么删除这个点的概率为,步数为1,对期望的贡献为。dfs一遍更新答案即可。
#include <bits/stdc++.h>
#define N 100005
using namespace std;
int n, head[N], ver[2 * N], Next[2 * N], tot = 0;
void add(int x, int y) {
ver[++tot] = y, Next[tot] = head[x], head[x] = tot;
}
double ans = 0;
void dfs(int x, int pre, int dep) {
ans += 1.0 / dep;
for(int i = head[x]; i; i = Next[i]) {
int y = ver[i];
if(y == pre) continue;
dfs(y, x, dep + 1);
}
}
int main() {
cin >> n;
for(int i = 1; i <= n - 1; i++) {
int u, v;
cin >> u >> v;
add(u, v);
add(v, u);
}
dfs(1, 0, 1);
cout << fixed << setprecision(8) << ans << endl;
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
2021-11-11 2020CCPC长春 F. Strange Memory(树上启发式合并)
2021-11-11 2020CCPC长春 D. Meaningless Sequence(打表/数位DP)
2020-11-11 AcWing 1224. 交换瓶子(交换最少次数使得数列有序)
2020-11-11 AcWing 1220. 生命之树(树形DP)