题目大意:给你一个空字符串,你有\(\frac{pa}{pa+pb}\)的概率往字符串最后面加个\(a\),\(\frac{pb}{pa+pb}\)的概率往字符串最后面加个\(b\),当子序列\(ab\)的个数超过\(k\)时,停止加入。求是期望出现子序列\(ab\)的个数


因为可以无限加字母,所以设\(f[i][j]\)表示这个串有\(i\)个\(a\),\(j\)个\(ab\)为前缀时,期望出现的\(ab\)子序列个数

转移方程为
\[f[i][j]=(f[i+1][j]*pa+f[i][j+i]*pb)/(pa+pb)\]

我们可以发现当\(i+j\geq k\)时,再加个\(b\)就可以结束。然后就是求这个状态对应的期望\(x\)

\(x= \frac{pb}{pa+pb} \sum\limits_{a=0}^{\infty}(i+j+a)*({\frac{pa}{pa+pb}})^a\)

\(=\frac{pb}{pa+pb}*\frac{\sum\limits_{a=0}^{\infty}(i+j+a)*({\frac{pa}{pa+pb}})^a-\sum\limits_{a=1}^{\infty}(i+j+a)*({\frac{pa}{pa+pb}})^a}{(1-\frac{pa}{pa+pb})}\)

\(=\sum\limits_{a=0}^{\infty}(i+j+a)*({\frac{pa}{pa+pb}})^a-\sum\limits_{a=0}^{\infty}(i+j+a)*({\frac{pa}{pa+pb}})^{a+1}\)

\(=i+j+\sum\limits_{a=1}^{\infty}({\frac{pa}{pa+pb}})^a\)

\(=i+j+\frac{pa}{pa+pb}/(1-\frac{pa}{pa+pb})\)

\(=i+j+\frac{pa}{pb}\)

这个过程用了两次错位相减

然后关于答案是\(f[0][0]\) or \(f[1][0]\)的问题

感性理解的话,前面无限加\(b\)不会对答案产生贡献

理性证明的话把转移方程代进去,然后就是\(f[0][0]=f[1][0]\)了

丢代码:

#include <bits/stdc++.h>
#define N 1010
#define ll long long
#define mod 1000000007ll
using namespace std;
ll invab,invb,f[N][N],pa,pb,k;//有i个a和j个ab的期望ab个数 

ll ksm(ll x,ll y){
    ll ans=1;
    for(;y;y>>=1,(x*=x)%=mod) if(y&1) (ans*=x)%=mod;
    return ans;
}
ll dfs(int x,int y){
    if(x+y>=k) return ((x+y)%mod+pa*invb%mod)%mod;
    if(f[x][y]) return f[x][y];
    else return f[x][y]=(dfs(x+1,y)*pa%mod+dfs(x,y+x)*pb%mod)%mod*invab%mod;
}

int main(){
    cin>>k>>pa>>pb;
    invab=ksm(pa+pb,mod-2);
    invb=ksm(pb,mod-2);
    cout<<dfs(1,0);
}

CF908D New Year and Arbitrary Arrangement(期望Dp+数学)的更多相关文章

  1. $CF908D\ New\ Year\ and\ Arbitrary\ Arrangement$ 期望$dp$

    正解:期望$dp$ 解题报告: 传送门$QwQ$ 阿关于题目里那个形如$ab$的子序列我说下,,,我我我之前$get$了好久$QAQ$.这里子序列的个数的定义是这样儿的,举个$eg$,$aabb$,就 ...

  2. CF908D New Year and Arbitrary Arrangement 期望、DP

    题目传送门 题意:给出正整数$pa,pb,k$,最开始你有一个空串,每一次你有$\frac{pa}{pa + pb}$的概率向串最后放一个$a$,有$\frac{pb}{pa + pb}$的概率向串最 ...

  3. CF 908D New Year and Arbitrary Arrangement——期望dp

    题目:http://codeforces.com/contest/908/problem/D 注意是子序列.加一个a对ab个数无影响:加一个b使ab个数多出它前面的a那么多个.所以状态里记录有多少个a ...

  4. CF 908 D New Year and Arbitrary Arrangement —— 期望DP

    题目:http://codeforces.com/contest/908/problem/D 首先,设 f[i][j] 表示有 i 个 a,j 个 ab 组合的期望,A = pa / (pa + pb ...

  5. CF908D New Year and Arbitrary Arrangement 题解

    \(0.\) 前言 有一天 \(Au\) 爷讲期望都见到了此题,通过写题解来加深理解. \(1.\) 题意 将初始为空的序列的末尾给定概率添加 \(a\) 或 \(b\),当至少有 \(k\) 对 \ ...

  6. [CF908D]New Year and Arbitrary Arrangement

    题面在这里 题意 给定三个数\(k,pa,pb\),每次有\(\frac{pa}{pa+pb}\)的概率往后面添加一个'\(a\)',每次有\(\frac{pb}{pa+pb}\)的概率往后面添加一个 ...

  7. hdu4035 Maze 【期望dp + 数学】

    题目链接 BZOJ4035 题解 神题啊...orz 不过网上题解好难看,数学推导不写\(Latex\)怎么看..[Latex中毒晚期] 我们由题当然能很快写出\(dp\)方程 设\(f[i]\)表示 ...

  8. Codeforces 908 D.New Year and Arbitrary Arrangement (概率&期望DP)

    题目链接:New Year and Arbitrary Arrangement 题意: 有一个ab字符串,初始为空. 用Pa/(Pa+Pb)的概率在末尾添加字母a,有 Pb/(Pa+Pb)的概率在末尾 ...

  9. 期望$DP$ 方法总结

    期望\(DP\) 方法总结 这个题目太大了,变化也层出不穷,这里只是我的一点心得,不定期更新! 1. 递推式问题 对于无穷进行的操作期望步数问题,一般可用递推式解决. 对于一个问题\(ans[x]\) ...

随机推荐

  1. android view 转Bitmap 生成截图

    文章链接:https://mp.weixin.qq.com/s/FQmYfT-KYiDbp-0HzK_Hpw 项目中经常会用到分享的功能,有分享链接也有分享图片,其中分享图片有的需要移动端对屏幕内容进 ...

  2. 当我们按下电源键,Android 究竟做了些什么?

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由goo发表于云+社区专栏 相信我们对Android系统都不陌生,而Android系统博大精深,被各种各样的智能设备承载的同时,我们会否 ...

  3. MySQL索引设计需要考虑哪些因素?

    索引小知识 篇幅有限,索引的基本知识我们就不赘述了,在此,我们尝试说明其中的一个小点-----B+树与B树的区别到底是什么. InnoDB是使用B+树来实现其索引功能的.在B+树中,内节点(非叶子节点 ...

  4. web.xml设置过滤直接访问

    <security-constraint> <web-resource-collection> <web-resource-name>JSPs</web-re ...

  5. 【公众号系列】SAP的新零售

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[公众号系列]SAP的新零售   写在前面 还是 ...

  6. Expression

    表达式目录树 1.什么是表达式目录树Expression? 表达式目录树是一个数据结构,语法树. 首先我们去看看 Expressions类 ,定义了一个泛型委托类型 TDelegate: // 摘要: ...

  7. Linux内存描述之内存页面page--Linux内存管理(四)

    1 Linux如何描述物理内存 Linux把物理内存划分为三个层次来管理 层次 描述 存储节点(Node) CPU被划分为多个节点(node), 内存则被分簇, 每个CPU对应一个本地物理内存, 即一 ...

  8. Hive的命名空间

    Hive的命名空间分为:hiveconf , system, env 和 hivevar 1.hiveconf 的命名空间指的是hive-site.xml下面配置的环境变量 2.system的命名空间 ...

  9. 关于模块安装及cmd安装pip3模块失败的 Read timed out.的补救方法

    自己在安装pip中的request模块时,安装到一半老是报错.我看了下报错的代码最后一句写的是 Read timed out. 就是读取超时,从网上查了一下,原因是由于中国的网比较慢,下载超时.需要在 ...

  10. 移动端1px的解决办法之styled

    做项目的时候总结了一个styled中解决移动端项目1px像素线的问题,封装了一个函数,大家可以直接使用,很方便. 1 import styled from 'styled-components' co ...