要点:

1.期望的套路,要求n以上的期望,则设dp[i]为i分距离终点的期望步数,则终点dp值为0,答案是dp[0]。

2.此题主要在于数学推导,一方面是要写出dp[i] = 什么,虽然一大串但是思维上并不难;然后就是一种解方程的方法,因为都跟dp[0]有关,且dp[0]是个确定的常数,所以设dp[i] = A[i] * dp[0] + B[i],带入上面那一串解出A[i]、B[i],发现是个递推式,于是递推求出A[i]B[i]即可得到dp[0] = B[0] / (1 - A[0])。推荐邝斌聚聚博客

式子出来了,代码就好写了:

 int T, n, K1, K2, K3, a, b, c;
db p[];
db A[], B[]; void GetPk() {
p[] = 1.0 / K1 / K2 / K3;
rep(i, , K1) rep(j, , K2) rep(k, , K3) {
if (i == a && j == b && k == c) continue;
p[i + j + k] += p[];
}
} void GetAB() {
irep(i, n, ) {
A[i] = p[];
B[i] = ;
rep(j, , K1 + K2 + K3) {
A[i] += A[i + j] * p[j];
B[i] += B[i + j] * p[j];
}
}
} int main() {
ios_base::sync_with_stdio(false);
cin.tie();
for (cin >> T; T; T--) {
init(A, ), init(B, ), init(p, );
cin >> n >> K1 >> K2 >> K3 >> a >> b >> c;
GetPk(), GetAB();
cout << fixed << setprecision() << B[] / ( - A[]) << endl;
}
return ;
}

最新文章

  1. 【历史】JavaScript和Java没啥关系!————JavaScript简史
  2. C#.Net下的防抖-Debounce和节流阀-Throttle功能实现
  3. 简单的解释XSS攻击
  4. 洛谷P1288 取数游戏II
  5. java基础-在dos控制台编写简易 的java程序
  6. 流媒体学习一(RTP)
  7. canvas 动态飞速旋转的矩形
  8. MSI安装程序在Win8/Win10及以上系统中DLL安装问题
  9. Add controls dynamically in flowlayoutpanel
  10. 串口通信中ReadFile和WriteFile的超时详解!
  11. 怎样在chrome中内置扩展,以及一些简单的定制
  12. Windows下 如何添加开机启动项
  13. Luogu3118:[USACO15JAN]Moovie Mooving
  14. jquery的attr()方法
  15. iOS开发之获取文件的md5值
  16. [转]一千行 MySQL 学习笔记
  17. 完全数java
  18. Windows7 密码修改
  19. [重点]delphi 实现 根据给定的标题去《中国青年报》网上电子报数据中查找匹配的内容,并从该内容中取出引题、正题、副题、作者和正文。
  20. 别再为了this发愁了:JS中的this机制

热门文章

  1. [HTML &amp; CSS] HTML和CSS基础知识
  2. [noi2002]荒岛野人 拓展欧几里得
  3. [RK3288][Android6.0] 调试笔记 --- 移除uboot和kernel开机logo【转】
  4. POJ 1611 The Suspects (并查集+数组记录子孙个数 )
  5. POJ3279 Fliptile —— 状态压缩 + 模拟
  6. POJ 3764 The xor-longest( 树上异或前缀和&amp;字典树求最大异或)
  7. Swift下表和方法
  8. Linux wpa_cli 调试方法
  9. 六、mysql语法
  10. CodeForces 1098D. Eels