博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
洛谷P3830 [SHOI2012]随机树(期望dp)
阅读量:5138 次
发布时间:2019-06-13

本文共 1811 字,大约阅读时间需要 6 分钟。

题面

题解

第一问:

\(f[i]\)表示\(i\)步操作后,平均深度期望

\(f[i] = \frac {f[i - 1] * (i - 1)+f[i-1]+2}{i}=f[i-1]+\frac{2}{i}\)

第二问就比较难受了:

\(E(x)=∑_{i=1}^{x}P\)

随机变量\(x\)的期望为对于所有\(i\)\(i≤x\)的概率之和

我们设\(f[i][j]\)表示\(i\)步后,树的深度\(>=j\)的概率

我们每次新建一个根,然后枚举左右子树分配节点情况

\(f[i][j] = \frac{1}{i-1}\sum_{k=1}^{i-1}(f[k][j-1]*1+f[i-k][j-1]*1-f[k][j-1]*f[i-k][j-1])\)

然后

\(Ans = \sum_{i=1}^{n-1}f[n][i]\)

Code

#include
#define LL long long#define RG registerusing namespace std;template
inline void read(T &x) { x = 0; RG char c = getchar(); bool f = 0; while (c != '-' && (c < '0' || c > '9')) c = getchar(); if (c == '-') c = getchar(), f = 1; while (c >= '0' && c <= '9') x = x*10+c-48, c = getchar(); x = f ? -x : x; return ;}template
inline void write(T x) { if (!x) {putchar(48);return ;} if (x < 0) x = -x, putchar('-'); int len = -1, z[20]; while (x > 0) z[++len] = x%10, x /= 10; for (RG int i = len; i >= 0; i--) putchar(z[i]+48);return ;}const int N = 110;int q, n;namespace cpp1 { double f[N]; void main() { for (int i = 2; i <= n; i++) f[i] = f[i - 1] + 2.0 / i; printf("%lf\n", f[n]); return ; }}namespace cpp2 { double f[N][N]; void main() { for (int i = 1; i <= n; i++) f[i][0] = 1; for (int i = 2; i <= n; i++) for (int j = 1; j < n; j++) { for (int k = 1; k < i; k++) f[i][j] += f[k][j - 1] + f[i - k][j - 1] - f[k][j - 1] * f[i - k][j - 1]; f[i][j] /= (i - 1); } double ans = 0; for (int i = 1; i < n; i++) ans += f[n][i]; printf("%lf\n", ans); } }int main() { read(q), read(n); if (q == 1) cpp1 :: main(); else cpp2 :: main(); return 0;}

转载于:https://www.cnblogs.com/zzy2005/p/10551554.html

你可能感兴趣的文章
css3 导入字体
查看>>
python-requests
查看>>
Selenium-一组元素的定位
查看>>
oracle课堂随笔--第十四天
查看>>
设计一个应用或网站时的流程
查看>>
mac安装配置mysql
查看>>
BZOJ 1011: [HNOI2008]遥远的行星
查看>>
WCF-绑定模型(一)
查看>>
Codeforces-A. Shortest path of the king(简单bfs记录路径)
查看>>
POJ--3279(开关问题2个不同时间写的代码)
查看>>
Leetcode: Combination Sum IV && Summary: The Key to Solve DP
查看>>
2015年九月八日---js学习总结
查看>>
VB6多线程,关键段操作
查看>>
Android LayoutInflater 使用[常用于自定义视图,UI件]
查看>>
Jquery解析json数组字符串
查看>>
centos7网卡报错,ip地址丢失不见等问题解决方法
查看>>
angular2/angular4 如何通过$http的post方法请求下载二进制的Excel文件
查看>>
从产品展示页面谈谈Hybris系列之二: DTO, Converter和Populator
查看>>
Windows下使用python库 curses遇到错误消息的解决方案
查看>>
layer.js打印iframe方法
查看>>