7.15 K codeforces 696BPuzzle

来源:互联网 发布:淘宝退款几天到银行卡 编辑:程序博客网 时间:2024/06/05 15:02

题意:给一棵有根树,dfs给节点标号,问每个节点的编号期望。

思路:观察发现节点编号期望与子节点个数有关,根据样例可猜得关系表达式。

代码:

#include<algorithm>#include<cstring>#include<cstdio>#include<vector>using namespace std;const int maxn=100001;int p[maxn],s[maxn];double ans[maxn];int n;int main(){    scanf("%d",&n);    for(int i=2;i<=n;i++) scanf("%d",&p[i]);    for(int i=1;i<=n+1;i++) {s[i]=1;ans[i]=1.0;}    for(int i=n;i>=2;i--) s[p[i]]+=s[i];    printf("%lf ",ans[1]=1.0);    for(int i=2;i<=n;i++) printf("%lf ",ans[i]=1.0+ans[p[i]]+0.5*(s[p[i]]-s[i]-1));    return 0;}

0 0
原创粉丝点击