codeforces 500d 树形dp和概率
2015-04-25 21:12
330 查看
求期望,公式是从树中任选3个点,共有C(n, 3)种情况,所有情况的和 / C(n, 3)即为答案。
对于树中的任意两个点,可以构成一条固定的路径,再从剩下的n - 2个点找一个点,可以得到另外两条路径,共有n - 2种情况。
所以每条路径出现的次数为n - 2次。
假设边Ei共有Ci条路径经过,则对于i = 1 : n, Wi * Ci的和即为所有路径的权和,
结果为所有路径的权和 * (n - 2) / C(n, 3);
化简得到公式:所有路径的权和 / n / (n - 1) * 6。
对于树中的任意两个点,可以构成一条固定的路径,再从剩下的n - 2个点找一个点,可以得到另外两条路径,共有n - 2种情况。
所以每条路径出现的次数为n - 2次。
假设边Ei共有Ci条路径经过,则对于i = 1 : n, Wi * Ci的和即为所有路径的权和,
结果为所有路径的权和 * (n - 2) / C(n, 3);
化简得到公式:所有路径的权和 / n / (n - 1) * 6。
#include <iostream> #include <cstdio> #include <cstring> using namespace std; #define LL long long const int MAX = 100010; struct node { int y, next, id; }; node p[MAX << 1]; int head[MAX << 1], cnt, len[MAX], dp[MAX], n; LL pass[MAX]; double ans; void addEdge(int x, int y, int id) { p[cnt].y = y; p[cnt].id = id; p[cnt].next = head[x]; head[x] = cnt++; } int dfs(int son, int fa) { int i, y, tmp; dp[son] = 1; for(i = head[son]; i != -1; i = p[i].next) { y = p[i].y; if(y == fa) { continue; } tmp = dfs(y, son); pass[p[i].id] = (LL)tmp * (LL)(n - tmp); ans += (double)pass[p[i].id] * (double)len[p[i].id]; // printf("%d %d\n", p[i].id, pass[p[i].id]); dp[son] += tmp; } return dp[son]; } int main() { int i, q, a, b, id, w; //freopen("in.txt", "r", stdin); while(scanf("%d", &n) != EOF) { memset(head, -1, sizeof(head)); cnt = 0; for(i = 1; i < n; i++) { scanf("%d%d%d", &a, &b, &len[i]); addEdge(a, b, i); addEdge(b, a, i); } ans = 0; dfs(1, 0); ans = ans / n / (n - 1) * 6; scanf("%d", &q); while(q--) { scanf("%d%d", &id, &w); ans = ans + (double)(w - len[id]) * pass[id] / n / (n - 1) * 6; len[id] = w; printf("%.10f\n", ans); } } return 0; }
相关文章推荐
- CodeForces 629E(#343)|Famil Door and Roads|树形dp|概率
- Codeforces 839C Journey (树形dp + 概率期望)
- Codeforces 696B 树形dp,概率
- New Year Santa Network - CodeForces 500 D 树形dp
- CodeForces 500 D. New Year Santa Network(树形DP)
- Codeforces 148 D Bag of mice(概率DP)
- codeforces 768 D Jon and Orbs(概率dp)
- codeforces 219D 树形dp
- codeforces-768D-Jon and Orbs(概率DP)
- CodeForces - 540D Bad Luck Island (概率dp)
- CodeForces 441 E.Valera and Number(概率DP)
- [概率DP] Codeforces 453A Little Pony and Expected Maximum
- 【codeforces】543D. Road Improvement【树形DP】
- CodeForces 148D Bag of mice (经典概率dp)
- CodeForces 160D - Distance in Tree 树形DP
- CodeForces 148D Bag of mice(概率DP )
- codeforces 464D World of Darkraft - 2 (概率dp)
- Codeforces 337 D Book of Evil(树形dp,两遍dfs)
- Codeforces 835F Round #427 Div2F :树形DP
- CodeForces 627D Preorder Test(树形DP+二分)