2017.11.2 树上期望DP 解题报告
来源:互联网 发布:淘宝我的评价在哪里找 编辑:程序博客网 时间:2024/05/22 08:21
题目描述
给你一棵包含个n点的有根树,点的标号是1…n,在t=1时( t表示时间),你在1号点,接下来,你会随机跑到当前点相邻的点,然后继续这个过程,直到访问了所有的点,已从一个点到另一个点需要的时间是1秒,那么问题来了,请问在这个随机过程中,对于每个节点,冬雪第一次访问的期望时间是多少?
输入数据:
3
1 2
2 3
输出数据:
1.000
2.000
5.000
【解题报告】
代码如下:
#include<cstdio>#include<cstring>#include<algorithm>using namespace std;#define N 100010#define LL long longint n,cnt=-1;struct Edge{int to,nxt;}e[N<<1];int head[N],size[N];LL dp[N];void adde(int u,int v){ e[++cnt].to=v;e[cnt].nxt=head[u];head[u]=cnt; e[++cnt].to=u;e[cnt].nxt=head[v];head[v]=cnt;}void dfs(int u,int fa){ size[u]=1; for(int i=head[u];~i;i=e[i].nxt) { int v=e[i].to; if(v==fa) continue; dfs(v,u); size[u]+=size[v]; } if(u!=1) dp[u]=dp[fa]+2*(n-size[u])-1;}void dfs2(int u,int fa) { for(int i=head[u];~i;i=e[i].nxt) { int v=e[i].to; if(v==fa) continue; dp[v]=dp[u]+1+2*(n-1-size[v]); dfs2(v,u); }}int main(){ freopen("tree.in","r",stdin); freopen("tree.out","w",stdout); memset(head,-1,sizeof(head)); scanf("%d",&n); for(int i=1;i<n;++i) { int u,v;scanf("%d%d",&u,&v); adde(u,v); } dp[1]=1; dfs(1,1);dfs2(1,1);// for(int i=1;i<=n;++i) printf("%d ",size[i]);puts(""); for(int i=1;i<=n;++i) printf("%lld.000\n",dp[i]); return 0;}
阅读全文
0 0
- 2017.11.2 树上期望DP 解题报告
- 2017.11.3 树上期望DP 解题报告
- BZOJ 3566 [SHOI 2014] 树上期望DP 解题报告
- 2017.11.2 支配树上LCA 解题报告
- BZOJ4033[HAOI2015] 树上染色 解题报告【树上DP】
- HDU 5781 数学期望+DP 解题报告
- BZOJ 4318 期望DP 解题报告
- bzoj 4318 期望DP 解题报告
- BZOJ4318 OUS! 解题报告【期望DP】
- ZOJ 3329 期望DP 解题报告
- poj 2096 期望DP 解题报告
- BZOJ 2201 期望DP 解题报告
- Codeforces 24D 期望DP 解题报告
- 树上操作 解题报告
- 解题报告:POJ_1155 TELE 树型DP(树上01背包)
- Hdu 1561 The more, The Better 树上DP 解题报告
- HDU1561 The more, The Better 解题报告【树上DP/背包】
- Tree (树上期望dp)
- 基本概念
- 枚举—案例(称硬币poj1013)
- SSL/TLS 双向认证(一) -- SSL/TLS工作原理
- Python 基础学习
- IDA常见宏定义
- 2017.11.2 树上期望DP 解题报告
- 等待一审四个月以上
- ROS常见错误及解决
- SmartView函数HypSetActiveConnection使用
- css样式优先级总结
- [codevs1213]解的个数 二分 + exgcd
- Python高级教程
- Islands UVA
- 网络流 (Ford-Fulkerson)