题意

给定三个数\(k\),\(pa\),\(pb\)
每次有\(\frac{pa}{pa+pb}\) 的概率往后面添加一个'\(a\)'
每次有\(\frac{pb}{pa+pb}\)的概率往后面添加一个'\(b\)'
当出现了\(k\)个形如\(ab\)的子序列(不用连续)时停止
求最后的\(ab\)序列的期望数
答案对\(10^9+7\)取膜

Sol

\(f[i][j]\)表示前面有\(i\)个\(a\),\(j\)对\(ab\)的期望\(ab\)的对数
倒着来转移
显然
\(f[i][j]=f[i+1][j]*\frac{pa}{pa+pb}+f[i][i+j]*\frac{pb}{pa+pb}\)
答案就是\(f[0][0]\)辣
然而\(f[0][0]=f[1][0]*\frac{pa}{pa+pb}+f[0][0]*\frac{pb}{pa+pb}\)
不好算
移项后得到\(f[0][0]=f[1][0]\)
所以输出\(f[1][0]\)就好了

然而串长是无限的,\(a\)的个数也是无限的,\(ab\)的对数无限,它们可以到\(\infty\)
这就很不好做了了

但是你会发现,当\(a\)无穷多时,放一个\(b\),\(ab\)对数就会超过\(k\),显然直接就停了
对于\(f[i][j]\),当\(i+j>=k\)时,考虑它的期望
也就是\(f[i][j]=\frac{pb}{pa+pb}\sum_{l=0}^{\infty}(\frac{pa}{pa+pb})^l(i+j+l)\)

\(S=\sum_{l=0}^{\infty}(\frac{pa}{pa+pb})^l(i+j+l)\)

\(\frac{pa}{pa+pb}S=\sum_{l=0}^{\infty}(\frac{pa}{pa+pb})^{l+1}(i+j+l)\)
两式相减得
\((1-\frac{pa}{pa+pb})S=(i+j)+\sum_{l=1}^{\infty}(\frac{pa}{pa+pb})^l\)

\(\sum_{l=1}^{\infty}(\frac{pa}{pa+pb})^l\)
也可以类似处理
得到就是
\(\frac{\frac{pa}{pa+pb}-(\frac{pa}{pa+pb})^{\infty}}{1-\frac{pa}{pa+pb}}=\frac{pa}{pb}\)
带回去
\((1-\frac{pa}{pa+pb})S=(i+j)+\frac{pa}{pb}\)

\(\frac{pb}{pa+pb}S=(i+j)+\frac{pa}{pb}\)

所以
\(f[i][j]=\frac{pb}{pa+pb}S=(i+j)+\frac{pa}{pb}\)

# include <bits/stdc++.h>
# define RG register
# define IL inline
# define Fill(a, b) memset(a, b, sizeof(a))
using namespace std;
typedef long long ll;
const int Zsy(1e9 + 7);int k, pa, pb, invb, inv, f[1005][1005], Pa, Pb;IL int Input(){RG int x = 0, z = 1; RG char c = getchar();for(; c < '0' || c > '9'; c = getchar()) z = c == '-' ? -1 : 1;for(; c >= '0' && c <= '9'; c = getchar()) x = (x << 1) + (x << 3) + (c ^ 48);return x * z;
}IL int Pow(RG ll x, RG ll y){RG ll ret = 1;for(; y; y >>= 1, x = x * x % Zsy)if(y & 1) ret = ret * x % Zsy;return ret;
}int main(RG int argc, RG char *argv[]){k = Input(), pa = Input(), pb = Input();invb = Pow(pb, Zsy - 2), inv = Pow(pa + pb, Zsy - 2);Pa = 1LL * pa * inv % Zsy, Pb = 1LL * pb * inv % Zsy;for(RG int i = k; i; --i)for(RG int j = k; ~j; --j)if(i + j >= k) f[i][j] = ((i + j) + 1LL * pa * invb % Zsy + Zsy) % Zsy;else f[i][j] = (1LL * f[i + 1][j] * Pa % Zsy + 1LL * f[i][j + i] * Pb % Zsy) % Zsy;printf("%d\n", f[1][0]);return 0;
}

转载于:https://www.cnblogs.com/cjoieryl/p/8671969.html

CF908D New Year and Arbitrary Arrangement相关推荐

  1. Noip前的大抱佛脚----赛前任务

    赛前任务 tags:任务清单 前言 现在xzy太弱了,而且他最近越来越弱了,天天被爆踩,天天被爆踩 题单不会在作业部落发布,所以可(yi)能(ding)会不及时更新 省选前的练习莫名其妙地成为了Noi ...

  2. Good Bye 2017

    太菜了啊,一不小心就goodbye rating了 A. New Year and Counting Cards time limit per test 1 second memory limit p ...

  3. Bottles Arrangement

    Bottles Arrangement Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...

  4. StackOverflow How to programmatically unplug replug an arbitrary USB device? 如何以编程方式拔出并重新插入任意USB设备

    文章目录 方法1:通过devcon工具重启usb hub 像这种情况,明明插了六个摄像头,它偏偏掉一个... 刚好,我们可以测试How to programmatically unplug & ...

  5. CVE-2014-4877 wget: FTP Symlink Arbitrary Filesystem Access

    目录 1. 漏洞基本描述 2. 漏洞带来的影响 3. 漏洞攻击场景重现 4. 漏洞的利用场景 5. 漏洞原理分析 6. 漏洞修复方案 7. 攻防思考 1. 漏洞基本描述 0x1: Wget简介 wge ...

  6. STM32 - 定时器的设定 - 基础 - 05 - Arbitrary waveform generation using timer DMAburst feature - 任意波形的序列产生

    DMA的功能不说了,如何产生任意序列的波形,我们仔细看看: 本节叙述了同DMA的方法,在不占用MCU资源的情况下,通过提前编辑一组任意定制的波形参数,实现复杂的波形输出. STM32 DMA-burs ...

  7. Mac安装sshpass同时解决Calling Non-checksummed download of sshpass formula file from an arbitrary URL报错

    可以直接使用: brew install https://raw.githubusercontent.com/kadwanev/bigboybrew/master/Library/Formula/ss ...

  8. LeetCode 526. Beautiful Arrangement

    526. Beautiful Arrangement Suppose you have N integers from 1 to N. We define a beautiful arrangemen ...

  9. Storage of multidimensional arrays based on arbitrary tiling

    论文标题: Storage of multidimensional arrays based on arbitrary tiling 作者: Furtado P Baumann P Proceedin ...

最新文章

  1. PHPUnit实践二(生命周期)
  2. ​FreeSWITCH视频会议“标准”解决方案
  3. js-权威指南学习笔记7
  4. 利用curl验证ssl网站(webservice)
  5. LeetCode 1072. 按列翻转得到最大值等行数(查找相同的模式,哈希计数)
  6. nvidia控制面板点了没反应win7_win7系统Nvidia控制面板怎么设置?
  7. git统计每个人的代码行数_程序员实用工具,推荐一款代码统计神器GitStats
  8. Javascript第四章变量的提升和预解析方法流程第四课
  9. GDAL被java调用 Cannot find proj.db
  10. JavaWeb中实现验证码(servlet版)
  11. 数据库性能优化的五种方案
  12. 地图染色(四色定理)问题
  13. 红米K30升级鸿蒙系统,Redmi K30 Pro变焦版相机免费升级,DxOMark版本马上到
  14. maven怎么和ecli_傻瓜式教你安装maven以及Eclipse搭建maven环境
  15. 试图加载格式不正确的程序。 (Exception from HRESULT: 0x8007000B)
  16. 学习的 定义是什么?生物
  17. RGB值和RGBA值
  18. 2021.10.8 车辆自适应巡航关键控制算法研究
  19. 歌尔2718硅咪 超小体积 S15OB383-058 S15OB381-055 S15OT421-001
  20. RFID射频卡、IC卡、ID卡在称重系统中有什么作用

热门文章

  1. 把java文件打包成.jar (jar命令详解)
  2. 1.7nginx用户认证
  3. java关键字--static--应用场景、特点和注意事项
  4. table中嵌套table,如何用jquery来控制奇偶行颜色
  5. 【Android】Android取消EditText自动获取焦点
  6. C#中自定义PictureBox控件
  7. 五、任意输入10个int类型数据,排序输出,再找出素数
  8. python读书笔记二、文件基本操作
  9. 冬季生存法则,不得不看!
  10. C#: .net序列化及反序列化 [XmlElement(“节点名称”)] [XmlAttribute(“节点属性”)] (上篇)...