$CF908D\ New\ Year\ and\ Arbitrary\ Arrangement$ 期望$dp$
正解:期望$dp$
解题报告:
阿关于题目里那个形如$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$的更多相关文章
- CF908D New Year and Arbitrary Arrangement(期望Dp+数学)
题目大意:给你一个空字符串,你有\(\frac{pa}{pa+pb}\)的概率往字符串最后面加个\(a\),\(\frac{pb}{pa+pb}\)的概率往字符串最后面加个\(b\),当子序列\(ab ...
- 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}\)的概率往后面添加一个 ...
- 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]\) ...
- 【CodeForces】908 D. New Year and Arbitrary Arrangement
[题目]Good Bye 2017 D. New Year and Arbitrary Arrangement [题意]给定正整数k,pa,pb,初始有空字符串,每次有pa/(pa+pb)的可能在字符 ...
随机推荐
- js+canvas五子棋人机大战ai算法
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- Linux服务部署:nginx服务 nfs服务
nginx服务 源码安装: yum install gcc-* glibc-* openssl openssl-devel pcre pcre-devel zlib zlib-devel -ylsta ...
- mysql数据库之去重
利用 distinct :对需要处理的字段进行去重 select distinct 字段名 from 表名 去重以后 利用group by select * from 表名 group by 字段名 ...
- Java8 Date与LocalDate互转
Java8 日期时间API,新增了LocalDate.LocalDateTime.LocalTime等线程安全类,接下来要说的是LocalDate与java.util.Date之间的转换. 1.Loc ...
- linux 端口映射设置
iptables -t nat -A PREROUTING -p tcp --dport 新端口 -j REDIRECT --to-ports 旧端口
- 云原生生态周报 Vol. 6 | KubeCon EU 特刊
5 月 26日,2019 年第一个 KubeCon + CloudNativeCon 在巴塞罗那成功闭幕.本届 KubeCon 共吸引了超过 7700 名与会者,相较去年哥本哈根大会的 4300 余名 ...
- java el表达式报空指针异常(nullpointexception)
最近在使用el表达式的时候,用到了int型变量,因为,很多时候,变量不会被赋初值,后面考虑了下,应该将声明由int 改为integer,改了之后就一直报空指针异常,后面仔细查看,我的getter和se ...
- codeforces 609B
#include<bits/stdc++.h> using namespace std; ]; int main() { memset(num,,sizeof(num)); int n,m ...
- css技巧 1200px居中容器中某个div增加横屏背景
<div class='container' style='width:1200px;margin:0 auto;'> <div style='width:200px;margin: ...
- javaObject类
所有类的公共父类,一旦一个类没有显示地继承一个类则其直接父类一定是Object. 一切数据类型都可用Object接收 class OOXX extends Object{}等价于class ooXX ...