题目链接:

  http://codeforces.com/problemset/problem/696/B

题目大意:

  给一棵树,从根节点开始递归,time=1,每次递归等概率随机访问这个节点的子节点,走过不会再走,每访问到一个新节点time+1,求访问每个节点的时间的期望。

题目思路:

  【数学规律】

  这题其实是一道概率DP的题目,但是找规律后发现答案和当前结点的子树大小有关。

  ans[v]=ans[u]+1+0.5*(child[u]-child[v]-1),child为当前节点的子树大小。

  1. //
  2. //by coolxxx
  3. ////<bits/stdc++.h>
  4. #include<iostream>
  5. #include<algorithm>
  6. #include<string>
  7. #include<iomanip>
  8. #include<memory.h>
  9. #include<time.h>
  10. #include<stdio.h>
  11. #include<stdlib.h>
  12. #include<string.h>
  13. //#include<stdbool.h>
  14. #include<math.h>
  15. #define min(a,b) ((a)<(b)?(a):(b))
  16. #define max(a,b) ((a)>(b)?(a):(b))
  17. #define abs(a) ((a)>0?(a):(-(a)))
  18. #define lowbit(a) (a&(-a))
  19. #define sqr(a) ((a)*(a))
  20. #define swap(a,b) ((a)^=(b),(b)^=(a),(a)^=(b))
  21. #define mem(a,b) memset(a,b,sizeof(a))
  22. #define eps (1e-8)
  23. #define J 10
  24. #define MAX 0x7f7f7f7f
  25. #define PI 3.14159265358979323
  26. #define N 100004
  27. using namespace std;
  28. typedef long long LL;
  29. int cas,cass;
  30. int n,m,lll,ans;
  31. int fa[N],s[N],last[N];
  32. double c[N];
  33. struct xxx
  34. {
  35. int next,to;
  36. }a[N];
  37. void add(int x,int y)
  38. {
  39. a[++lll].next=last[x];
  40. a[lll].to=y;
  41. last[x]=lll;
  42. }
  43. void cal(int u)
  44. {
  45. int i,v;
  46. for(i=last[u];i;i=a[i].next)
  47. {
  48. v=a[i].to;
  49. cal(v);
  50. s[u]+=s[v];
  51. }
  52. s[u]++;
  53. }
  54. void dfs(int u)
  55. {
  56. int i,v;
  57. for(i=last[u];i;i=a[i].next)
  58. {
  59. v=a[i].to;
  60. c[v]=c[u]+(s[u]-s[v]-)*0.5+;
  61. dfs(v);
  62. }
  63. }
  64. void print()
  65. {
  66. int i;
  67. for(i=;i<=n;i++)
  68. {
  69. printf("%d ",s[i]);
  70. }
  71. puts("");
  72. }
  73. int main()
  74. {
  75. #ifndef ONLINE_JUDGE
  76. freopen("1.txt","r",stdin);
  77. // freopen("2.txt","w",stdout);
  78. #endif
  79. int i,j;
  80. // for(scanf("%d",&cas);cas;cas--)
  81. // for(scanf("%d",&cas),cass=1;cass<=cas;cass++)
  82. // while(~scanf("%s",s))
  83. while(~scanf("%d",&n))
  84. {
  85. mem(s,);mem(last,);lll=;
  86. for(i=;i<=n;i++)
  87. {
  88. scanf("%d",&fa[i]);
  89. add(fa[i],i);
  90. }
  91. cal();
  92. c[]=1.0;
  93. dfs();
  94. for(i=;i<=n;i++)
  95. printf("%.1lf ",c[i]);
  96. puts("");
  97. }
  98. return ;
  99. }
  100. /*
  101. //
  102.  
  103. //
  104. */

【数学相关、规律】Codeforces 696B Puzzles的更多相关文章

  1. CodeForces - 696B Puzzles

    http://codeforces.com/problemset/problem/696/B 题目大意: 这是一颗有n个点的树,你从根开始游走,每当你第一次到达一个点时,把这个点的权记为(你已经到过不 ...

  2. codeforces 696B Puzzles 树形概率计算

    题意:给一棵有根树,从根节点深搜,每次随机走,问每个点的dfs序的期望是多少 分析:对于每一个点,它的所有祖先节点dfs序肯定在它之前,它所在的子树的节点一定在它后面, 剩下的是既不是子树又不是祖先的 ...

  3. codeforces 687B - Remainders Game 数学相关(互质中国剩余定理)

    题意:给你x%ci=bi(x未知),是否能确定x%k的值(k已知) ——数学相关知识: 首先:我们知道一些事情,对于k,假设有ci%k==0,那么一定能确定x%k的值,比如k=5和ci=20,知道x% ...

  4. [自用]多项式类数学相关(定理&证明&板子)

    写在前面 由于上一篇总结的版面限制,特开此文来记录 \(OI\) 中多项式类数学相关的问题. 该文启发于Miskcoo的博客,甚至一些地方直接引用,在此特别说明:若文章中出现错误,烦请告知. 感谢你的 ...

  5. [总结]多项式类数学相关(定理&证明&板子)

    目录 写在前面 前置技能 多项式相关 多项式的系数表示 多项式的点值表示 复数相关 复数的意义 复数的基本运算 单位根 代码相关 多项式乘法 快速傅里叶变换 DFT IDFT 算法实现 递归实现 迭代 ...

  6. [总结]其他杂项数学相关(定理&证明&板子)

    目录 写在前面 一类反演问题 莫比乌斯反演 快速莫比乌斯变换(反演)与子集卷积 莫比乌斯变换(反演) 子集卷积 二项式反演 内容 证明 应用举例 另一形式 斯特林反演 第一类斯特林数 第二类斯特林数 ...

  7. 【3D研发笔记】之【数学相关】(一):坐标系

    现在开始学习3D基础相关的知识,本系列的数学相关笔记是基于阅读书籍<3D数学基础:图形与游戏开发>而来,实现代码使用AS3,项目地址是:https://github.com/hammerc ...

  8. [总结]数论和组合计数类数学相关(定理&证明&板子)

    0 写在前面 0.0 前言 由于我太菜了,导致一些东西一学就忘,特开此文来记录下最让我头痛的数学相关问题. 一些引用的文字都注释了原文链接,若侵犯了您的权益,敬请告知:若文章中出现错误,也烦请告知. ...

  9. Python学习笔记17:标准库之数学相关(math包,random包)

    前面几节看得真心累.如今先来点简单easy理解的内容. 一 math包 math包主要处理数学相关的运算. 常数 math.e   # 自然常数e math.pi  # 圆周率pi 运算函数 math ...

随机推荐

  1. Ant学习笔记(1) 基础知识

    Ant Apache Ant 是一个基于 Java的构建工具. 下载Ant google.baidu.Windows用户下载zip格式.解压即可. Windows安装Ant Ant本质上是一个Java ...

  2. mssql 创建触发器

    MS-SMS里创建触发器: 首先右击表内的触发器文件夹图标 然后输入触发器创建指令,一下案例:(添加创建时间) 创建: SET ANSI_NULLS ON GO SET QUOTED_IDENTIFI ...

  3. document.documentElement.style判断浏览器是否支持Css3属性

    1.document.documentElement.style 属性定义了当前浏览器支持的所有Css属性 包括带前缀的和不带前缀的 例如:animation,webkitAnimation,msAn ...

  4. 网站如何防Session冒名顶替和cookie防篡改

    做网站难免要面对安全性的问题,诸如sql注入拉,cookie冒名拉,等等,sql注入算是老生常谈,翻翻旧账有不少优秀的帖子在说明这个问题,所以我们来说说Session冒名顶替的风险以及应对的办法. 首 ...

  5. awr相关指标解析

    awr相关指标解析 2016年11月11日 15:09

  6. C#读取Visual FoxPro(*.dbf)数据并使用SqlBulkCopy插入到SqlServer 2008 R2数据表中

    公司数据库从32位的SqlServer 2005升级到64位的SqlServer 2008 R2后,无法再像原来通过Link Server连接VFP同步数据,因此考虑用代码程序从VFP数据库中读取所需 ...

  7. JS键盘码值表

    值得注意的是,keypress事件中获取的keycode.which,都是按键对应的ascii值,而不完全对应下面的列表. 将字符转换为ascii值可以用charCodeAt函数. keycode 8 ...

  8. ARM平台的内核模块编写与安装

       Linux 系统一直在不断地发展,而相应地她的代码量也在不断的增大,直接导致的结果就是她的可执行镜像就变得越来越庞大.那么问题来了,如果将所有的镜像文件一次性地复制到内存中,那么所需的空间就非常 ...

  9. windows7 jdk 环境变量添加

    JAVA_HOME D:\Java;PATH %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;CLASSPATH .;%JAVA_HOME%\lib;%JAVA_HOME%\l ...

  10. Poj 3667

    这是第一题线段树的区间合并的题: 这类的题用于求连续的最长长度什么的: 这题我看的是一篇比较不错的博客: 我把我的理解注释在代码里了: #include <iostream>#includ ...