首页 > 其他分享 >Codeforces Round #172 (Div. 1) C. Game on Tree(期望的线性性质)

Codeforces Round #172 (Div. 1) C. Game on Tree(期望的线性性质)

时间:2022-11-11 23:23:18浏览次数:55  
标签:head 期望 int Tree Codeforces tot dep dfs Round

题意是给出一棵有根树,每次等概率删除一个点以及以其为根的子树,问删完整棵树的期望步数。

暴力枚举方案显然不可,考虑期望的线性性质,将问题转化为删除每个点的期望步数再求和。一个点消失要么是选中了这个点的某个祖先(对这个点的期望没有贡献),要么是直接删除这个点。换句话说,一条链上每个点首先被删除的概率是相等的。设这个点的深度为dep,那么删除这个点的概率为\(\frac{1}{dep}\),步数为1,对期望的贡献为\(\frac{1}{dep}\times 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;
}

标签:head,期望,int,Tree,Codeforces,tot,dep,dfs,Round
From: https://www.cnblogs.com/lipoicyclic/p/16882391.html

相关文章

  • Educational Codeforces Round 109 (Rated for Div. 2) E. Assimilation IV(期望的线性
    题意是有n个城市和m个点,已知每个城市到每个点的距离为\(a_{ij}\),每秒进行一次操作,每次随机选一个没选过的城市建一个碑,其影响的范围每秒加一,求n秒后被影响的点数的期......
  • Codeforces Round #688 (Div. 2) D
    D.Checkpoints对于单独的一个1我们知道他的贡献为211呢贡献值为4101贡献值为81001贡献值为16然后二进制拼凑就可以了对于有奇数的显然-1voidsolve(){int......
  • loj #10069. 「一本通 3.1 练习 4」Tree
    给你一个无向带权连通图,每条边是黑色或白色。求一棵最小权的恰好有K条白色边的生成树。题目保证有解  二分一个增加量md, 给每个白边权值加md,跑一下kruskal,......
  • Codeforces Round #695 (Div. 2) C
    C.ThreeBags我们发现这个题无非就是找一个最小的吸收了其他两组的数再回报过去但是自己组的只有两种选择要吗直接负汇报过去要吗就又要牺牲另一组的最小的一个数吸......
  • CodeForces - 1156D 0-1-Tree
    题意:给出一棵树,树的边权只有0和1。求有多少有序点对,其最短路径上每条权值为0的边不紧跟在权值为1的边后面。解:合法路径如下所示:000000 111111 000111 随便找个结点为......
  • Codeforces Round #697 (Div. 3) F
    F.UnusualMatrix这种题两种操作就相当于那种差分后再总体减的那种我们考虑先只进行一种操作比如说是行我们对于每一行应该只有可能经过0/1次变换都变成一摸一样的......
  • 动态构建TreeView(中国省市区)
    .aspx代码如下:<%@PageLanguage="C#"AutoEventWireup="true"CodeFile="中国市区县.aspx.cs"Inherits="中国市区县"%><!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0......
  • Codeforces Round #642 (Div. 3) E
    E.K-periodicGarland对于一个序列显然我们只有%m相同的位置上才能放置1不然肯定不合法所以我们把他分成m个部分记录一下总和然后转化一下题意发现他就是一个然......
  • Little Girl and Maximum Sum CodeForces - 276C - 差分
    给定一个数列\(a={a_1,a_2,...,a_n}\)以及\(q\)次查询。其中第\(i\)次查询如同:\(l_i,r_i\),意指求\(\sum_{j=l_i}^{r_i}{a_j}\)。但是查询前可以对数列任意排......
  • 「题解」Codeforces 1098D Eels
    暴力是,每次挑出最小的两个合并。需要观察到没有产生贡献的次数很小。考虑最小的那个数的大小,如果一次合并没有产生贡献,那么最小的数至少\(\times2\).所以最多会有\(\mat......