概率dp——逆推期望+循环迭代zoj3329
2024-09-17 01:51:24
首先要推出dp[i]的期望方程,会发现每一项都和dp[0]相关,
那我们将dp[i]设为和dp[0]有关的式子dp[i]=a[i]*dp[0]+b[i],然后再回代到原来的期望方程里
然后进行整理,可以发现两个系数a[i],b[i]是可以逆推的,并且通过求出a[0],b[0]可以求出dp[0]
#include<bits/stdc++.h>
using namespace std;
#define maxn 1050
double A[maxn],B[maxn],p[maxn];
int main(){
double K1,K2,K3;
int t,a,b,c,n;
cin>>t;
while(t--){
memset(p,,sizeof p);
memset(A,,sizeof A);
memset(B,,sizeof B);
cin>>n>>K1>>K2>>K3>>a>>b>>c;
double base=(double)/(K1*K2*K3); for(int i=;i<=K1;i++)
for(int j=;j<=K2;j++)
for(int k=;k<=K3;k++)
if(i==a && j==b && k==c)
p[]+=base;//跳回0的概率
else p[i+j+k]+=base;//跳i+j+k步的概率 for(int i=n;i>=;i--){
for(int j=;j<=K1+K2+K3;j++)
A[i]+=p[j]*A[i+j],B[i]+=p[j]*B[i+j];
A[i]+=p[],B[i]+=;
} printf("%.8lf\n",B[]/(-A[]));
}
}
最新文章
- Dropzone.js实现文件拖拽上传
- Atitit opencv版本新特性attilax总结
- MYSQL介绍安装及一些问题解决
- angularJS中directive与controller之间的通信
- CSS实现垂直居中
- 高级特性(2)- XML
- javascript windows对象
- SqlSugar ORM 入门到精通【一】入门篇
- Excel 2010高级应用-饼图(四)
- 关于Intellij Idea导出可执行打jar
- LaTeX技巧892: Ubuntu 安装新版本TeXLive并更新
- mfc简单框架的分析和原理记录
- Android精通之AsyncTask与ListView讲解
- Codeforces 817
- 【嵌入式】——arm裸机开发 step by step 之 串口通信
- python 笔记 2017
- vue中使用codemirror
- Timus 1005 解题报告
- cmake函数參数解析
- MySQL 数据库常用命令小结