正解:期望$dp$

解题报告:

传送门$QwQ$

阿关于题目里那个形如$ab$的子序列我说下,,,我我我之前$get$了好久$QAQ$.这里子序列的个数的定义是这样儿的,举个$eg$,$aabb$,就有4个形如$ab$的子序列.

然后考虑$dp$?设$f_{i,j}$表示前缀中有$i$个$a$,$j$个$ab$的停止后的期望长度?然后为了后面表达方便设$A=\frac{p_a}{p_a+p_b},B=\frac{p_b}{p_a+p_b}$.

不难推出转移方程就$f_{i,j}=f_{i+1,j}\cdot A+f_{i,i+j}\cdot B$,就分别是加了个$a$加了个$b$,还是挺显然的嘛$QwQ$.

像这种显然考虑记搜转移?但是发现有个问题,就会出现一直是$a$然后就死循环下去的局面$QAQ$

但是发现,在$i+j\leq K$的情况下,只要有一个$b$就会停止操作,所以期望长度可以写成$B\cdot \sum\limits_{p=0}^\infty [A^p \cdot (i + j + p)]$

考虑变形?

设$S=\sum\limits_{p=0}^\infty [A^p\cdot (i+j+p)]$

套路地错位相减得

$A\cdot S=\sum\limits_{p=0}^\infty [A^{p+1}\cdot (i+j+p)]$

$(1-A)\cdot S=i+j+\sum\limits_{p=1}^\infty A^p$($umm$没$get$的自己手动拆下式子减下就明白了$QwQ$

$B\cdot S=i+j+\frac{p_a}{p_b}$

然后就做完辣?就记搜地转移,然后如果出现$i+j\leq K$的情况就直接算出$i+j+\frac{p_a}{p_b}$就成?

最后还有一个问题$QwQ$.就如果出现一直是$b$的情况?所以这里初始状态的时候强行先给个$a$就成

对了,记得开$ll$昂

$over$

#include<bits/stdc++.h>
using namespace std;
#define il inline
#define int long long
#define gc getchar()
#define ri register int
#define rb register bool
#define rc register char
#define rp(i,x,y) for(ri i=x;i<=y;++i)
#define my(i,x,y) for(ri i=x;i>=y;--i) const int mod=1e9+,N=+;
int K,a,b,A,B,C,f[N][N]; il int read()
{
rc ch=gc;ri x=;rb y=;
while(ch!='-' && (ch>'' || ch<''))ch=gc;
if(ch=='-')ch=gc,y=;
while(ch>='' && ch<='')x=(x<<)+(x<<)+(ch^''),ch=gc;
return y?x:-x;
}
il int power(ri gd,ri gs){ri ret=;while(gs){if(gs&)ret=1ll*ret*gd%mod;gd=1ll*gd*gd%mod;gs>>=;}return ret;}
int dp(ri i,ri j)
{if(i+j>=K)return i+j+C;if(f[i][j])return f[i][j];return f[i][j]=(1ll*dp(i+,j)*A%mod+1ll*dp(i,i+j)*B%mod)%mod;} signed main()
{
//freopen("908d.in","r",stdin);freopen("908d.out","w",stdout);
K=read();a=read();b=read();A=a*power(a+b,mod-)%mod;B=b*power(a+b,mod-)%mod;C=a*power(b,mod-)%mod;
printf("%lld\n",dp(,));
return ;
}

$CF908D\ New\ Year\ and\ Arbitrary\ Arrangement$ 期望$dp$的更多相关文章

  1. CF908D New Year and Arbitrary Arrangement(期望Dp+数学)

    题目大意:给你一个空字符串,你有\(\frac{pa}{pa+pb}\)的概率往字符串最后面加个\(a\),\(\frac{pb}{pa+pb}\)的概率往字符串最后面加个\(b\),当子序列\(ab ...

  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. Codeforces 908 D.New Year and Arbitrary Arrangement (概率&期望DP)

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

  8. 期望$DP$ 方法总结

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

  9. 【CodeForces】908 D. New Year and Arbitrary Arrangement

    [题目]Good Bye 2017 D. New Year and Arbitrary Arrangement [题意]给定正整数k,pa,pb,初始有空字符串,每次有pa/(pa+pb)的可能在字符 ...

随机推荐

  1. @codeforces - 1086F@ Forest Fires

    目录 @description@ @solution@ @accepted code@ @details@ @description@ 一个无穷大的方格图,每个方格内都种了棵树. 一开始点燃了 n 棵 ...

  2. oracle函数 CHR(n1)

    [功能]:将ASCII 码转换为字符. [参数]:n1,为0 ~ 255,整数 [返回]:字符型 [示例] SQL> select chr(54740) zhao,chr(65) chr65 f ...

  3. HZOJ 斐波那契(fibonacci)

    先说一个规律: 如图将每个月出生的兔子的编号写出来,可以发现一只兔子在哪一列他的父亲就是谁. 每列的首项可以通过菲波那契求得. 然后你就可以像我一样通过这个规律打表每个点的父亲,预处理出倍增数组,倍增 ...

  4. JQuery---高级选择器

    一.派生选择器 例如:$('#bavBar  a') 二.孩子选择器 例如:$('body > p') 三.相邻兄弟选择器 例如:$('h2 + div') 四.属性选择器 1.$('img[a ...

  5. H3C 广域网连接方式

  6. supersocket Silverlight 策略服务器

    <?xml version="1.0"?> <configuration> <configSections> <section name= ...

  7. P1113 同颜色询问

    题目描述 现在有一个包含 \(n\) 个元素的数组,它的元素的编号从 \(1\) 到 \(n\) . 每一个元素都有一个初始的颜色 \(C_i\) 以及数值 \(W_i\) . 这个数组支持 \(4\ ...

  8. H3C 调试OSPF

  9. Acegi框架介绍

    开发四年只会写业务代码,分布式高并发都不会还做程序员?->>>        概述     对于任何一个完整的应用系 统,完善的认证和授权机制是必不可少的.Acegi Securit ...

  10. linux 使用 ioctl 参数

    在看 scull 驱动的 ioctl 代码之前, 我们需要涉及的另一点是如何使用这个额外的参数. 如果它是一个整数, 就容易: 它可以直接使用. 如果它是一个指针, 但是, 必须小心些. 当用一个指针 ...