CF908D New Year and Arbitrary Arrangement 期望、DP
题意:给出正整数$pa,pb,k$,最开始你有一个空串,每一次你有$\frac{pa}{pa + pb}$的概率向串最后放一个$a$,有$\frac{pb}{pa + pb}$的概率向串最后放一个$b$,当串中$ab$子序列的数量$\geq K$时停止,问在操作停止时串中$ab$子序列个数的期望,对$10^9+7$取模。$pa,pb \leq 10^6,k \leq 1000$
设$f_{i,j}$表示当前串内有$i$个$a$,$j$个$ab$子序列的子序列个数期望(至于为什么不是设$a$和$b$,因为实际上$b$影响的是$ab$的数量,而只知道$a$和$b$的多少,$ab$的多少是不确定的)。可以知道转移方程为:$f_{i,j}=f_{i,i+j} \times \frac{pb}{pa+pb} + f_{i+1,j} \times \frac{pa}{pa+pb}$,但是实际上有情况一直放$a$而不放$b$,不依靠一些数学方法状态量会爆炸。
接下来是愉悦的推公式时间~~
我们可以知道当$i+j \geq k$时,只要再放一个$b$就将停止操作,那么我们的期望可以写作$\frac{pb}{pa + pb} \times \sum\limits_{p=0}^\infty [(\frac{pa}{pa + pb})^p \times (i + j + p)]$。不妨设$S = \sum\limits_{p=0}^\infty [(\frac{pa}{pa + pb})^p \times (i + j + p)]$,那么$\frac{pa}{pa + pb}S = \sum\limits_{p=0}^\infty [(\frac{pa}{pa + pb})^{p+1} \times (i + j + p)]$,相减得$\frac{pb}{pa + pb}S = i + j + \sum\limits_{p=1}^\infty (\frac{pa}{pa + pb})^p$,又由无穷递减等比数列公式得$\sum\limits_{p=1}^\infty (\frac{pa}{pa + pb})^p = \frac{\frac{pa}{pa+pb}}{1-\frac{pa}{pa+pb}}=\frac{pa}{pb}$,所以我们需要求的期望就是$i+j+\frac{pa}{pb}$
#include<bits/stdc++.h> #define MOD 1000000007 #define ll long long #define MAXN 1001 using namespace std; ll dp[MAXN][MAXN]; int K , pa , pb; inline ll ksm(ll a , ll b){ ll times = ; while(b){ ) times = times * a % MOD; a = a * a % MOD; b >>= ; } return times; } inline ll calc(ll a , ll b){ if(a + b < K) return dp[a][b]; else )) % MOD; } int main(){ cin >> K >> pa >> pb; ; i >= ; i--) ; j ; j--) dp[i][j] = (calc(i + j , j) * pb + pa * calc(i , j + )) % MOD * ksm(pa + pb , MOD - ) % MOD; cout << calc( , ); ; }
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+数学)
题目大意:给你一个空字符串,你有\(\frac{pa}{pa+pb}\)的概率往字符串最后面加个\(a\),\(\frac{pb}{pa+pb}\)的概率往字符串最后面加个\(b\),当子序列\(ab ...
- 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)的可能在字符 ...
随机推荐
- 【读书笔记】iOS-Interface Builder
IBOutlet或IBAction符号对编译不产生任何影响,它们只是标记,用于告诉Xcode这些对象可以和UI控件进行关联,以便于在编辑Interface Builder上的UI控件的时候Xcode可 ...
- NODE获取节点删除空格的操作
NODE节点操作有: object.parentNode:获取某子元素的父级: object.childNodes:是获取所有的子元素节点,返回数组类型: object.lastChild: 获取该元 ...
- [VUE ERROR] Invalid default value for prop "slides": Props with type Object/Array must use a factory function to return the default value
错误原因: 当给子组件设置 props 属性时,如果参数类型是 Array 或 Object ,它的默认值必须是由工场函数返回,不能直接赋值 错误代码: proE: { type: Array, de ...
- 安卓开发之自定义一个view弹出框
https://www.cnblogs.com/muyuge/p/6152167.html
- Linux笔记(二): WIN 10 Ubuntu 双系统
(一) 说明 记录一次ubuntu安装过程及遇到的问题. 环境:WIN 10 单硬盘 (二) ubuntu ISO文件下载 ubuntu 18.04 https://www.ubuntu.com/ ...
- [20170625]12c Extended statistics.txt
[20170625]12c Extended statistics.txt --//别人的系统12c,awr报表出现大量调用执行如下sql语句.select default$ from col$ wh ...
- axure元件库导入后重启程序元件库消失问题
把元件库文件放在我的文档里的 \Documents\Axure\元件库 就可以了,重新启动程序不会消失
- NPOI帮助类
/// <summary> /// NPOI导出帮助类 /// </summary> public class NPOIHelper { /// <summary> ...
- EntityFramework Code-First 简易教程(五)-------领域类配置
前言:在前篇中,总是把领域类(Domain Class)翻译成模型类,因为我的理解它就是一个现实对象的抽象模型,不知道对不对.以防止将来可能的歧义,这篇开始还是直接对Domain Class直译. 前 ...
- MySQL面试题之死锁
什么是死锁?锁等待?如何优化这类问题?通过数据库哪些表可以监控? 死锁是指两个或多个事务在同一资源上互相占用,并请求加锁时,而导致的恶性循环现象.当多个事务以不同顺序试图加锁同一资源时,就会产生死锁. ...