洛谷p1085答案C语言,【BZOJ2830/洛谷3830】随机树(动态规划)

【BZOJ2830/洛谷3830】随机树(动态规划)

题面

题解

先考虑第一问。

第一问的答案显然就是所有情况下所有点的深度的平均数。

考虑新加入的两个点,一定会删去某个叶子,然后新加入两个深度为原先叶子\(+1\)的点。

那么新加入的叶子的深度的期望是未加入之前的期望+1,假设\(f_i\)为\(i\)个点的期望。

那么\(f_i=(f_{i-1}*({i-1})-f_{i-1}+2*(f_{i-1}+1))/i=f_{i-1}+2/i\)

含义就是平均的深度乘上点的个数等于深度总和,减去删去的点的深度,加入两个新的深度为原先点\(+1\)的点。

考虑第二问

不难想到一个状态\(f[i][j]\)表示拥有\(i\)个节点,深度为\(j\)的概率。

那么答案就是\(\sum_{i=0}^nf[n][i]*i\)

这个转移不难,我们根节点已经固定,并且它一定拥有左右子树,我们转移的时候分开考虑左右子树,然后再在根节点的位置合并,即

\[f[i][max(k,l)+1]\rightarrow f[j][k]*f[i-j][l]/(i-1)

\]

除掉\(i-1\)的原因是一开始我们直接把左右儿子都当成整棵树来看,所以最终合并的时候要把总方案除掉。

还有一种做法,大同小异,然而复杂度更优秀。

设\(f[i][j]\)表示\(i\)个叶子的树,深度至少为\(j\)的概率。

转移和上面的东西类似,容斥去重。

\[f[i][j]=\frac{1}{i-1}\sum f[k][j-1]*1+f[i-k][j-1]*1-f[i][j-1]*f[i-k][j-1]

\]

答案是\(\sum f[n][i]\)

#include

#include

using namespace std;

int n,Q;

double ans,f[101][101];

int main()

{

cin>>Q>>n;

if(Q==1)

{

for(int i=2;i<=n;++i)

ans+=2.0/i;

printf("%.6lf\n",ans);

}

else

{

for(int i=1;i<=n;++i)f[i][0]=1;

for(int i=2;i<=n;++i)

for(int j=1;j<=i;++j)

for(int k=1;k

f[i][j]+=(f[k][j-1]+f[i-k][j-1]-f[k][j-1]*f[i-k][j-1])/(i-1);

for(int i=1;i<=n;++i)ans+=f[n][i];

printf("%.6lf\n",ans);

}

return 0;

}

洛谷P3830 随机树(SHOI2012)概率期望DP

题意:中文题,按照题目要求的二叉树生成方式,问(1)叶平均深度 (2)树平均深度 解法:这道题看完题之后完全没头绪,无奈看题解果然不是我能想到的qwq.题解参考https://blog.csdn.ne ...

BZOJ2830 &amp&semi; 洛谷3830:&lbrack;SHOI2012&rsqb;随机树——题解

https://www.luogu.org/problemnew/show/P3830#sub   

洛谷1087 FBI树 解题报告

洛谷1087 FBI树 本题地址:http://www.luogu.org/problem/show?pid=1087 题目描述 我们可以把由“0”和“1”组成的字符串分为三类:全“0”串称为B串,全 ...

洛谷P3018 &lbrack;USACO11MAR&rsqb;树装饰Tree Decoration

洛谷P3018 [USACO11MAR]树装饰Tree Decoration树形DP 因为要求最小,我们就贪心地用每个子树中的最小cost来支付就行了 #include

NOIP2017提高组Day2T3 列队 洛谷P3960 线段树

原文链接https://www.cnblogs.com/zhouzhendong/p/9265380.html 题目传送门 - 洛谷P3960 题目传送门 - LOJ#2319 题目传送门 - Vij ...

洛谷P3703 &lbrack;SDOI2017&rsqb;树点涂色(LCT,dfn序,线段树,倍增LCA)

洛谷题目传送门 闲话 这是所有LCT题目中的一个异类. 之所以认为是LCT题目,是因为本题思路的瓶颈就在于如何去维护同颜色的点的集合. 只不过做着做着,感觉后来的思路(dfn序,线段树,LCA)似乎要 ...

洛谷P3372线段树1

难以平复鸡冻的心情,虽然可能在大佬眼里这是水题,但对蒟蒻的我来说这是个巨大的突破(谢谢我最亲爱的lp陪我写完,给我力量).网上关于线段树的题解都很玄学,包括李煜东的中的 ...

洛谷P1280 && caioj 1085 动态规划入门(非常规DP9:尼克的任务)

这道题我一直按照往常的思路想 f[i]为前i个任务的最大空暇时间 然后想不出来怎么做-- 后来看了题解 发现这里设的状态是时间,不是任务 自己思维还是太局限了,题做得太少. 很多网上题解都反着做,那么 ...

洛谷3830 &lbrack;SHOI2012&rsqb;随机树 【概率dp】

题目 输入格式 输入仅有一行,包含两个正整数 q, n,分别表示问题编号以及叶结点的个数. 输出格式 输出仅有一行,包含一个实数 d,四舍五入精确到小数点后 6 位.如果 q = 1,则 d 表示叶结 ...

随机推荐

来玩Play框架05 数据库

作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 数据库是整个站点的数据储藏室.用户提交的数据可以存储在数据库中,以便未来使用.Pl ...

oracle课堂笔记

1.DOS登录1.1.sqlplus 输入用户名.密码1.2.sqlplus /nolog conn 用户名/密码@ip地址/数据库名称 [如果是sys登录则必须加上as sysdba ,as sys ...

append appendChild appendTo区别

1.append和appendChild的区别 append是jquery文档操作用法 ① append() 方法在被选元素的结尾(仍然在内部)插入指定内容. $(selector).append(c ...

防范 DDoS 攻击的 15 个方法

为了对抗 DDoS(分布式拒绝服务)攻击,你需要对攻击时发生了什么有一个清楚的理解. 简单来讲,DDoS 攻击可以通过利用服务器上的漏洞,或者消耗服务器上的资源(例如 内存.硬盘等等)来达到目的.DD ...

BZOJ3105&colon; &lbrack;cqoi2013&rsqb;新Nim游戏

题解: 线性基?类似于向量上的基底. 此题题解戳这里:http://blog.csdn.net/wyfcyx_forever/article/details/39477673 代码: #include ...

数据库(学习整理)----4--Oracle数据查询(基础点1)

其他: 计算机中的内存是线性的,一维. length('')计算字符的个数,而不是字节的个数 Oracle中的日期类型和数值类型的数据可以做运算符(>,=,)比较 如果 ...

【动态规划】XMU 1028 Game Boy Advance

题目链接: http://acm.xmu.edu.cn/JudgeOnline/problem.php?id=1028 题目大意: 求01背包最优解的方案.物件数和物件编号. 题目思路: [动态规划] ...

svn 提交 working copy is not up-to-date

svn在提交时报错信息如下: working copy is not up-to-date svn:commit failed(details follow): svn:file "xxxx ...

安装配置Oracle 12c RAC

http://www.lab128.com/rac12_installation_using_vb/article_text.html

Vue用axios跨域访问数据

Vue用axios跨域访问数据axios是vue-resource的替代品,vue-resource不再维护.安装axios:npm install axios使用vue-cli开发时,由于项目本身启 ...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值