题解 [SHOI2012]随机树
Description
\(n\le 100\)
Solution
Problem 1
不难看出,答案就是:
\]
Problem 2
这个问真的很仙。
可(bu)以(neng) 想到,我们可以设 \(f_{i,j}\) 表示有 \(i\) 个叶子时深度 \(\ge j\) 的概率,可以得到转移式:
\]
可以直接除以 \(i-1\) 是因为可以证明把两颗子树合并,只要总大小相同,那么方案就相同。这里就不赘述了。
然后我们就可以得到答案就是:
\]
Code
#include <bits/stdc++.h>
using namespace std;
#define Int register int
#define MAXN 105
template <typename T> inline void read (T &t){t = 0;char c = getchar();int f = 1;while (c < '0' || c > '9'){if (c == '-') f = -f;c = getchar();}while (c >= '0' && c <= '9'){t = (t << 3) + (t << 1) + c - '0';c = getchar();} t *= f;}
template <typename T,typename ... Args> inline void read (T &t,Args&... args){read (t);read (args...);}
template <typename T> inline void write (T x){if (x < 0){x = -x;putchar ('-');}if (x > 9) write (x / 10);putchar (x % 10 + '0');}
double f[MAXN][MAXN];
signed main(){
int q,up;read (q,up);
if (q == 1){
double d = 1;
for (Int n = 2;n < up;++ n) d += 2.0 / (n + 1);
printf ("%.6f\n",d);
}
else{
for (Int i = 1;i <= up;++ i) f[i][0] = 1;
for (Int i = 2;i <= up;++ i)
for (Int j = 1;j < i;++ 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 d = 0;
for (Int i = 1;i < up;++ i) d += (f[up][i] - f[up][i + 1]) * i;
printf ("%.6f\n",d);
}
return 0;
}
题解 [SHOI2012]随机树的更多相关文章
- P3830 [SHOI2012]随机树 题解
P3830 随机树 坑题,别人的题解我看了一个下午没一个看得懂的,我还是太弱了. 题目链接 P3830 [SHOI2012]随机树 题目描述 输入输出格式 输入格式: 输入仅有一行,包含两个正整数 q ...
- bzoj2830: [Shoi2012]随机树
题目链接 bzoj2830: [Shoi2012]随机树 题解 q1好做 设f[n]为扩展n次后的平均深度 那么\(f[n] = \frac{f[n - 1] * (n - 1) + f[n - 1] ...
- [SHOI2012]随机树
[SHOI2012]随机树 题目大意( 网址戳我! ) 随机树是一颗完全二叉树,初始状态下只有一个节点. 随机树的生成如下:每次随机选择一个叶子节点,扩展出两个儿子. 现在给定一个正整数\(n\)(\ ...
- P3830 [SHOI2012]随机树
P3830 [SHOI2012]随机树 链接 分析: 第一问:f[i]表示有i个叶子结点的时候的平均深度,$f[i] = \frac{f[i - 1] + 2 + f[i - 1] * (i - 1) ...
- luogu P3830 [SHOI2012]随机树 期望 dp
LINK:随机树 非常经典的期望dp. 考虑第一问:设f[i]表示前i个叶子节点的期望平均深度. 因为期望具有线性性 所以可以由每个叶子节点的期望平均深度得到总体的. \(f[i]=(f[i-1]\c ...
- BZOJ2830 & 洛谷3830:[SHOI2012]随机树——题解
https://www.luogu.org/problemnew/show/P3830#sub <-题面看这里~ https://www.lydsy.com/JudgeOnline/prob ...
- luogu3830 [SHOI2012]随机树
传送门:洛谷 题目大意:对于一个只有一个节点的二叉树,一次操作随机将这棵树的叶节点的下方增加两个节点.$n-1$次操作后变为$n$个叶节点的二叉树.求:(1)叶节点平均深度的期望值(2)树深度的数学期 ...
- 洛谷P3830 [SHOI2012]随机树(期望dp)
题面 luogu 题解 第一问: 设\(f[i]\)表示\(i\)步操作后,平均深度期望 \(f[i] = \frac {f[i - 1] * (i - 1)+f[i-1]+2}{i}=f[i-1]+ ...
- 【[SHOI2012]随机树】
感觉第一问就非常神仙,还有第二问怎么被我当成组合数学题来做了 首先是第一问 期望具有线性性,于是深度平均值的期望等于深度和的期望值的平均 设\(dp_x\)表示具有\(x\)个叶子节点的树的深度和的期 ...
随机推荐
- 设置rem基准值
<script type="text/javascript"> (function(){ var docEl = document.documentElement; f ...
- centos7 配置 ftp 服务器(本地用户)
2021-09-02 1. 安装 # 安装 vsftpd yum -y install vsftpd 2. 启动服务并添加到开机自启 # 启动 vsftpd systemctl start vsftp ...
- Servlet监听器详解及举例
监听器就是一个实现特定接口的普通java程序,这个程序专门用于监听另一个java对象的方法调用或属性改变,当被监听对象发生上述事件后,监听器某个方法将立即被执行. 监听器原理 监听原理 1.存在事件源 ...
- Linux系统的高级网络配置(bond、team、网桥)
1.bond接口 Red Hat Enterprise Linux 允许管理员使用 bonding 内核模块和称为通道绑定接口的特殊网络接口将多个网络接口绑定 到一个通道.根据选择的绑定模式 , 通道 ...
- 并发编程之:JUC并发控制工具
大家好,我是小黑,一个在互联网苟且偷生的农民工. 在上一期我们讲了Thread.join()方法和CountDownLatch,这两者都可以做到等待一个线程执行完毕之后当前线程继续执行,并且Count ...
- Python - 面向对象编程 - __str__()
为什么要讲 __str__ 在 Python 中,直接 print 一个实例对象,默认是输出这个对象由哪个类创建的对象,以及在内存中的地址(十六进制表示) 假设在开发调试过程中,希望使用 print ...
- junit4 套件测试
junit4 中的套件可以用来测试一个需要依赖的业务流程,如购买必须依赖与登录成功 代码实现: 测试数据存放 public class BaseTest { protected static Hash ...
- 传递集合参数以及SpringMVC和Struts2的区别
一.传递集合参数 二.和Struts2的区别 Struts2是基于类封装请求参数,SpringMVC是基于方法封装参数:
- J2EE分布式微服务云开发架构 Spring Cloud+Mybatis+ElementUI 前后端分离J2EE分布式微服务云开发架构 Spring Cloud+Mybatis+ElementUI 前后端分离
鸿鹄云架构[系统管理平台]是一个大型企业.分布式.微服务.云架构的JavaEE体系快速研发平台,基于模块化.微服务化.原子化.热部署的设计思想,使用成熟领先的无商业限制的主流开源技术(Spring ...
- Java中使用jxl.jar将数据导出为excel文件
Java对Excel文件的读写操作可由jxl.jar或poi.jar实现,这里使用jxl.jar完成对Excel文件的导出. 一.将Excel文件导出在本地 步骤: 创建文件 -> 创建 ...