题目链接  Goodbye 2017 Problem D

题意  一个字符串开始,每次有$\frac{pa}{pa+pb}$的概率在后面加一个a,$\frac{pb}{pa+pb}$的概率在后面加一个$b$。

   求当整个串中有至少$k$个$ab$的时候(不需要连续,下同),字符串中$ab$个数的期望。

设$f[i][j]$为字符串有$i$个$a$,$j$个$ab$的时候字符串中$ab$个数的期望

设$p = \frac{pa}{pa+pb}$, $q = \frac{pb}{pa+pb}$

那么对于正常的情况(非边界情况),

$f[i][j] = f[i+1][j] * p + f[i + 1][i + j] * q$

对于边界情况,即当$i + j >= k$且$j < k$的时候,这个时候再加一个$a$就满足了题意的条件。

这个情况下$f[i][j] - i - j$应该都是一样的。令$f[i][j] - i - j = c$。

$c = pq + 2p^{2}q + 3p^{3}q + ... + ...$

时间复杂度$O(n^{2})$

#include <bits/stdc++.h>

using namespace std;

#define rep(i, a, b)	for (int i(a); i <= (b); ++i)
#define dec(i, a, b) for (int i(a); i >= (b); --i) const int N = 1e3 + 10;
const int mod = 1e9 + 7; int f[N][N];
int k, pa, pb, A, B, C; void gcd(int a, int b, int &x, int &y){
if (!b) {x = 1; y = 0;}
else { gcd(b, a % b, y, x); y -= x * (a / b);}
} int inv(int a){
int x, y;
gcd(a, mod, x, y);
return (x % mod + mod) % mod;
} int main(){ scanf("%d%d%d", &k, &pa, &pb);
A = 1ll * pa * inv(pa + pb) % mod;
B = (1 - A + mod) % mod;
C = 1ll * pa * inv(pb) % mod;
dec(i, k, 1){
dec(j, k, 0){
f[i][j] = i + j >= k ? (i + j + C) % mod: (1ll * A * f[i + 1][j] + 1ll * B * f[i][i + j]) % mod;
}
} printf("%d\n", f[1][0]);
return 0;
}

  

最新文章

  1. Spring 的动态数据源实现
  2. 将DataReader转换为DataTable
  3. Struts1 中提交中文表单到ActionForm后出现乱码问题的原因及处理方法
  4. iOS - property,strong,weak,retain,assign,copy,nomatic 的区别及使用
  5. jquery中append()、prepend()、after()、before()的区别详解
  6. 161213、Maven资源替换和Freemarker模板
  7. cocos2dx 3.x(捕鱼达人炮台角度换算)
  8. 基于SocketAsyncEventArgs的版本
  9. CopyOnWriteArrayList理解与理解
  10. bzoj2049-洞穴勘测(动态树lct模板题)
  11. Enze Second day
  12. Little Puzzlers–List All Anagrams in a Word
  13. jQuery replaceWith replaceAll end的用法
  14. docker数据库
  15. JavaScript根据经纬度获取距离信息
  16. Python 包管理(PYPA)
  17. 【原创】大叔问题定位分享(29)datanode启动报错:50020端口被占用
  18. python 数据分类赋值
  19. 微信小程序支付最容易犯的坑notify_url(支付回调)
  20. JavaScript的面向对象原理之原型链详解

热门文章

  1. jvm可视化工具jvisualvm插件——Visual&#160;GC
  2. HTTP - 请求头的具体含义
  3. python 学习分享-rabbitmq
  4. http协议--留
  5. Python网络编程(weekly summary1)
  6. 2 26requests.py
  7. HTML5应用:setCustomValidity(message)接口
  8. 第二阶段团队冲刺-seven
  9. [HNOI2015][bzoj4009] 接水果 [整体二分+扫描线]
  10. margin百分比,重叠和auto