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]\) ...
随机推荐
- Windows7 64位环境6sv2.1大气传输模型修改源码添加国产高分卫星GF-1 GF-2光谱响应支持
下面开始添加国产卫星光谱响应的支持: 以下主要参考文章“6S大气传输模型修改源码添加.自定义卫星光谱响应(以HJ-1B CCD为例)”网址:http://blog.csdn.net/sam92/art ...
- Servlet工作原理解析 《深入分析java web 技术内幕》第九章
参考关于servblet的相关文章 侧重概况:https://blog.csdn.net/levycc/article/details/50728921 ibm的相关:https://www.ibm. ...
- .NET性能优化小技巧
.NET 性能优化小技巧 Intro 之前做了短信发送速度的提升,在大师的指导下,发送短信的速度有了极大的提升,学到了一些提升 .NET 性能的一些小技巧 HttpClient 优化 关于使用 Htt ...
- maven springTest结合junit单元测试
1.引入相关依赖 <dependency> <groupId>junit</groupId> <artifactId>junit</artifac ...
- git 更新分支的信息
假如服务器的某个分支删除了,但是本地通过git branch -av还是可以看得到,感觉很烦,通过以下命令就可以更新分支的情况. git fetch origin --prune
- AngularJS学习之旅—AngularJS Table(十一)
1.AngularJS 表格 1. ng-repeat 指令可以完美的显示表格 AngularJS 实例 <!DOCTYPE html> <html> <head> ...
- c/c++ 多线程 参数传递
多线程 参数传递 1,值传递,拷贝一份新的给新的线程.线程1中有个int变量a,在线程1中启动线程2,参数是a的值,这时就会拷贝a,线程1和线程2不共享a. 2,引用传递,不拷贝一份新的给新的线程.线 ...
- iOS MVVM架构总结
为什么使用MVVM iOS中,我们使用的大部分都是MVC架构.虽然MVC的层次明确,但是由于功能日益的增加.代码的维护,使得更多的代码被写在了Controller中,这样Controller就显得非常 ...
- 【eclipse】mybatis配置文件创建与mapper接口文件创建
什么是mybatis: MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射. mybatis配置文件: <?xml version="1.0" ...
- SpringMVC相关常用注解
@Controller: @Controller 用于标记在一个类上,使用它标记的类就是一个SpringMVC Controller 对象 @RequestMapping: RequestMappin ...