CF908D New Year and Arbitrary Arrangement
题意
给定三个数\(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相关推荐
- Noip前的大抱佛脚----赛前任务
赛前任务 tags:任务清单 前言 现在xzy太弱了,而且他最近越来越弱了,天天被爆踩,天天被爆踩 题单不会在作业部落发布,所以可(yi)能(ding)会不及时更新 省选前的练习莫名其妙地成为了Noi ...
- Good Bye 2017
太菜了啊,一不小心就goodbye rating了 A. New Year and Counting Cards time limit per test 1 second memory limit p ...
- Bottles Arrangement
Bottles Arrangement Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- StackOverflow How to programmatically unplug replug an arbitrary USB device? 如何以编程方式拔出并重新插入任意USB设备
文章目录 方法1:通过devcon工具重启usb hub 像这种情况,明明插了六个摄像头,它偏偏掉一个... 刚好,我们可以测试How to programmatically unplug & ...
- CVE-2014-4877 wget: FTP Symlink Arbitrary Filesystem Access
目录 1. 漏洞基本描述 2. 漏洞带来的影响 3. 漏洞攻击场景重现 4. 漏洞的利用场景 5. 漏洞原理分析 6. 漏洞修复方案 7. 攻防思考 1. 漏洞基本描述 0x1: Wget简介 wge ...
- STM32 - 定时器的设定 - 基础 - 05 - Arbitrary waveform generation using timer DMAburst feature - 任意波形的序列产生
DMA的功能不说了,如何产生任意序列的波形,我们仔细看看: 本节叙述了同DMA的方法,在不占用MCU资源的情况下,通过提前编辑一组任意定制的波形参数,实现复杂的波形输出. STM32 DMA-burs ...
- 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 ...
- LeetCode 526. Beautiful Arrangement
526. Beautiful Arrangement Suppose you have N integers from 1 to N. We define a beautiful arrangemen ...
- Storage of multidimensional arrays based on arbitrary tiling
论文标题: Storage of multidimensional arrays based on arbitrary tiling 作者: Furtado P Baumann P Proceedin ...
最新文章
- PHPUnit实践二(生命周期)
- ​FreeSWITCH视频会议“标准”解决方案
- js-权威指南学习笔记7
- 利用curl验证ssl网站(webservice)
- LeetCode 1072. 按列翻转得到最大值等行数(查找相同的模式,哈希计数)
- nvidia控制面板点了没反应win7_win7系统Nvidia控制面板怎么设置?
- git统计每个人的代码行数_程序员实用工具,推荐一款代码统计神器GitStats
- Javascript第四章变量的提升和预解析方法流程第四课
- GDAL被java调用 Cannot find proj.db
- JavaWeb中实现验证码(servlet版)
- 数据库性能优化的五种方案
- 地图染色(四色定理)问题
- 红米K30升级鸿蒙系统,Redmi K30 Pro变焦版相机免费升级,DxOMark版本马上到
- maven怎么和ecli_傻瓜式教你安装maven以及Eclipse搭建maven环境
- 试图加载格式不正确的程序。 (Exception from HRESULT: 0x8007000B)
- 学习的 定义是什么?生物
- RGB值和RGBA值
- 2021.10.8 车辆自适应巡航关键控制算法研究
- 歌尔2718硅咪 超小体积 S15OB383-058 S15OB381-055 S15OT421-001
- RFID射频卡、IC卡、ID卡在称重系统中有什么作用
热门文章
- 把java文件打包成.jar (jar命令详解)
- 1.7nginx用户认证
- java关键字--static--应用场景、特点和注意事项
- table中嵌套table,如何用jquery来控制奇偶行颜色
- 【Android】Android取消EditText自动获取焦点
- C#中自定义PictureBox控件
- 五、任意输入10个int类型数据,排序输出,再找出素数
- python读书笔记二、文件基本操作
- 冬季生存法则,不得不看!
- C#: .net序列化及反序列化 [XmlElement(“节点名称”)] [XmlAttribute(“节点属性”)] (上篇)...