CF908D New Year and Arbitrary Arrangement(期望Dp+数学)
题目大意:给你一个空字符串,你有\(\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+数学)的更多相关文章
- $CF908D\ New\ Year\ and\ Arbitrary\ Arrangement$ 期望$dp$
正解:期望$dp$ 解题报告: 传送门$QwQ$ 阿关于题目里那个形如$ab$的子序列我说下,,,我我我之前$get$了好久$QAQ$.这里子序列的个数的定义是这样儿的,举个$eg$,$aabb$,就 ...
- CF908D New Year and Arbitrary Arrangement 期望、DP
题目传送门 题意:给出正整数$pa,pb,k$,最开始你有一个空串,每一次你有$\frac{pa}{pa + pb}$的概率向串最后放一个$a$,有$\frac{pb}{pa + pb}$的概率向串最 ...
- CF 908D New Year and Arbitrary Arrangement——期望dp
题目:http://codeforces.com/contest/908/problem/D 注意是子序列.加一个a对ab个数无影响:加一个b使ab个数多出它前面的a那么多个.所以状态里记录有多少个a ...
- 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 ...
- CF908D New Year and Arbitrary Arrangement 题解
\(0.\) 前言 有一天 \(Au\) 爷讲期望都见到了此题,通过写题解来加深理解. \(1.\) 题意 将初始为空的序列的末尾给定概率添加 \(a\) 或 \(b\),当至少有 \(k\) 对 \ ...
- [CF908D]New Year and Arbitrary Arrangement
题面在这里 题意 给定三个数\(k,pa,pb\),每次有\(\frac{pa}{pa+pb}\)的概率往后面添加一个'\(a\)',每次有\(\frac{pb}{pa+pb}\)的概率往后面添加一个 ...
- hdu4035 Maze 【期望dp + 数学】
题目链接 BZOJ4035 题解 神题啊...orz 不过网上题解好难看,数学推导不写\(Latex\)怎么看..[Latex中毒晚期] 我们由题当然能很快写出\(dp\)方程 设\(f[i]\)表示 ...
- Codeforces 908 D.New Year and Arbitrary Arrangement (概率&期望DP)
题目链接:New Year and Arbitrary Arrangement 题意: 有一个ab字符串,初始为空. 用Pa/(Pa+Pb)的概率在末尾添加字母a,有 Pb/(Pa+Pb)的概率在末尾 ...
- 期望$DP$ 方法总结
期望\(DP\) 方法总结 这个题目太大了,变化也层出不穷,这里只是我的一点心得,不定期更新! 1. 递推式问题 对于无穷进行的操作期望步数问题,一般可用递推式解决. 对于一个问题\(ans[x]\) ...
随机推荐
- 对象的使用处理,作用域的和ajax中this的理解
首先,封装类,理解清楚你需要用的哪几个变量,然后声明,然后在类里封装函数,其中,constructor就是存放初始变量的地方. 这里还是datatable的处理解决, constructor(tabl ...
- mean项目的分模块开发
全文字版: 新建maven工程在,作为父工程用于最后集合使用,该工程不需要src,只需要一个pom.xml文件,规定一下依赖版本之类的,再建一个工具类的工程,不需要放配置文件,和工程中方法接口有关的不 ...
- 从分治算法到 Hadoop MapReduce
从分治算法说起 要说 Hadoop MapReduce 就不得不说分治算法,而分治算法其实说白了,就是四个字 分而治之 .其实就是将一个复杂的问题分解成多组相同或类似的子问题,对这些子问题再分,然后再 ...
- MongoDB副本集功能及节点属性梳理
副本集的主要功能 副本集是MongoDB高可用的基础,其主要作用 归纳为以下几点: (1)高可用,防止设备(服务器.网络)故障.提供自动FailOver功能. (2)无需配置高可用性虚拟节点:无论是S ...
- Win10 - MySQL 10061 错误
Win10 - MySQL 10061 错误 报错内容为: Can't connect to MySQL server on localhost (10061) 参考 : MySQL问题记录--Can ...
- Web应用安全测试
偷偷挪用人家的分享: https://blog.csdn.net/aojie80/article/details/43836521 写的很棒 Burp Suite 介绍 https://blog.cs ...
- Bootstrap Multiselect插件使用步骤以及常见参数配置介绍
Multiselect是基于jQuery插件的,它可以以下拉列表的形式为用户提供选择内容,能进行单选或者多选.它应用的主要步骤如下: 一,引入需要的相关js和css文件 既然是Bootstrap插件, ...
- C#默认参数原理探究
起因 写这一篇的起因是想要通过新增默认参数来代替以前的方法,结果发现尽管在调用时写起来一样,实际上也没有被当做同样的方法,两个方法大致如下: // 先前的方法-删除 private static st ...
- Cloudera Manager(CDH5)内部结构、功能包括配置文件、目录位置等
1. 相关目录 /var/log/cloudera-scm-installer : 安装日志目录./var/log/* : 相关日志文件(相关服务的及CM的)./usr/share/cmf/ : 程序 ...
- JavaScript面向对象—基本数据类型和引用数据类型的区别和变量及作用域(函数和变量)
基本类型和引用类型的值 ECMAScript 变量可能包含两种不同的数据类型的值:基本类型值和引用类型值. 基本类型值指的是那些保存在栈内存中的简单数据段,即这种值完全保存在内存中的一个位置. 而引用 ...