当前位置: 首页 > news >正文

HDU 4089 Activation

        概率dp,这种一个点作为起点,求到多点的概率或期望的都可以倒过来想。。。即让起点变为那多个点,终点(即答案)即为原来起点的值。

       dp[ i ][ 1 ] = p1 * dp[ i ][ 1 ] + p2 * dp[ i ][ i ] ---- (1);

       dp[ i ][ j ]  = p1 * dp[ i ][ i ]  + p2 * dp[ i ][ j - 1] + p3 * dp[ i - 1][ j - 1]  + (j <= k ? p4 : 0) ----- (2);   

       对(2)式递推下去,就可以结合(1)式得出dp[ i ][ 1]的值。。。然后递推即可,然后求得的dp[ n ][ m ] 即为所求。

       注意:p3 && p4 == 0 时要特判。。。

 

#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
#define LL long long
#define CLR(a, b) memset(a, b, sizeof(a))

using namespace std;
const int N = 2002;
const int MOD = 1e9 +7;

double dp[2][N];

int main()
{
    int n, m , k, i, j;
    double p1, p2, p3, p4;
    while(scanf("%d%d%d%lf%lf%lf%lf", &n, &m, &k, &p1, &p2, &p3, &p4) != EOF)
    {
        if(p4 == 0) {puts("0.00000"); continue;}
        dp[1][1] = p4 / (1 - p1 - p2);
        double a = p2 / (1 - p1), b = p3 / (1 - p1), c = p4 / (1 - p1), tmp, d;
        for(i = 2; i <= n; i ++)
        {
            tmp = 0;d = a;
            for(j = 2; j <= i; j ++)
            {
                tmp = tmp * a + dp[1 - (i & 1)][j - 1] * b + (j <= k ? c : 0.0) ;
                d *= a;
            }
            tmp = tmp * a + c;
            dp[i & 1][1] = tmp / (1 - d);
            for(j = 2; j <= i; j ++)
            {
                dp[i & 1][j] = dp[1 - (i & 1)][j - 1] * b + dp[i & 1][j - 1] * a + (j <= k ? c : 0.0);
            }
        }
        printf("%.5f\n", dp[n & 1][m]);
    }
}


 


 

相关文章:

  • Linux 上安装 Subversion
  • PHP5.4第二天——数组、多维数组和数组函数
  • MySQL数据库中delimiter的作用概述
  • unigui验证微信服务器的有效性
  • python PIL except: IOError: decoder jpeg not available
  • Pyp 替代sed,awk的文本处理工具
  • 看电影读小说,你就能懂经济学
  • android 开发环境安装和测试中常出现的问题
  • 转---9 个开始使用 C++11 的理由
  • 技本功丨呀~我不会写CSS之vertical-align(上集)
  • 如何正确理解,内页权重高于首页?
  • Android adb 修改手机代理方式
  • 曜石科技宣布获得千万级天使轮投资,全方面布局电竞产业链 ...
  • 不测的秘密:精准测试之路----读书笔记(第四章)
  • (译) 函数式 JS #1:简介
  • 【剑指offer】让抽象问题具体化
  • 77. Combinations
  • CentOS 7 防火墙操作
  • JDK9: 集成 Jshell 和 Maven 项目.
  • Js基础知识(四) - js运行原理与机制
  • ------- 计算机网络基础
  • 如何胜任知名企业的商业数据分析师?
  • 通过npm或yarn自动生成vue组件
  • 交换综合实验一
  • 正则表达式-基础知识Review
  • ​RecSys 2022 | 面向人岗匹配的双向选择偏好建模
  • ​渐进式Web应用PWA的未来
  • ​虚拟化系列介绍(十)
  • # 飞书APP集成平台-数字化落地
  • #鸿蒙生态创新中心#揭幕仪式在深圳湾科技生态园举行
  • #每日一题合集#牛客JZ23-JZ33
  • #我与Java虚拟机的故事#连载12:一本书带我深入Java领域
  • (2009.11版)《网络管理员考试 考前冲刺预测卷及考点解析》复习重点
  • (2015)JS ES6 必知的十个 特性
  • (c语言)strcpy函数用法
  • (C语言)编写程序将一个4×4的数组进行顺时针旋转90度后输出。
  • (办公)springboot配置aop处理请求.
  • (读书笔记)Javascript高级程序设计---ECMAScript基础
  • (二) Windows 下 Sublime Text 3 安装离线插件 Anaconda
  • (附源码)springboot美食分享系统 毕业设计 612231
  • (黑马C++)L06 重载与继承
  • (剑指Offer)面试题34:丑数
  • (六)软件测试分工
  • (万字长文)Spring的核心知识尽揽其中
  • (转)自己动手搭建Nginx+memcache+xdebug+php运行环境绿色版 For windows版
  • .“空心村”成因分析及解决对策122344
  • .gitignore文件—git忽略文件
  • .net Signalr 使用笔记
  • .NET 设计模式初探
  • .NET/ASP.NETMVC 深入剖析 Model元数据、HtmlHelper、自定义模板、模板的装饰者模式(二)...
  • .NET企业级应用架构设计系列之技术选型
  • .NET中统一的存储过程调用方法(收藏)
  • .sh文件怎么运行_创建优化的Go镜像文件以及踩过的坑
  • /deep/和 >>>以及 ::v-deep 三者的区别
  • @拔赤:Web前端开发十日谈