POJ3744 Scout YYF I (概率DP + 矩陣優化)
題目連結:
http://poj.org/problem?id=3744
題意:
有一段路,路上有n個陷阱,每一次只能向前走一步或者兩步,求安全走過這段路的改路
分析:
設dp[i]表示安全走過第i個陷阱的概率
那麼dp[i+1]=dp[i]*(1-p(走到第i+1個陷阱))
因為每次只能走一步或者兩步,所有安全走過第i個陷阱後的位置一定在a[i]+1;\
其中a[i]表示第i個陷阱的位置
求從a[i]+1,走到a[i+1]的概率的時候我們需要用到矩陣來經行優化
ans[i]表示走到位置i的概率
ans[i] = p*ans[i-1]+(1-p)*ans[i-2];
ans[0]=0,ans[1]=1;
程式碼如下:
#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
using namespace std;
const int maxn = 15;
double dp[maxn];
int a[maxn];
double p;
struct matrix{
double a[2][2];
};
matrix I={
1,0,
0,1
};
matrix multi(matrix A,matrix B)
{
matrix C;
for(int i=0;i<2;i++){
for(int j=0;j<2;j++){
C.a[i][j]=0;
for(int k=0;k<2;k++)
C.a[i][j]+=A.a[i][k]*B.a[k][j];
}
}
return C;
}
double pow(matrix A,int b)
{
matrix ans = I;
if(b<0) return 0;
if(b==0) return 1;
while(b){
if(b&1) ans=multi(A,ans),b--;
b>>=1;
A=multi(A,A);
}
return ans.a[0][0];
}
int main()
{
int n;
while(~scanf("%d%lf",&n,&p)){
memset(dp,0,sizeof(dp));
dp[0]=1.0;
for(int i=1;i<=n;i++)
scanf("%d",a+i);
a[0]=0;
sort(a,a+n+1);
matrix A={p,1-p,1,0};
for(int i=1;i<=n;i++){
dp[i]=dp[i-1]*(1-pow(A,a[i]-a[i-1]-1));
}
printf("%.7lf\n",dp[n]);
}
return 0;
}
相關文章
- POJ 3744 概率dp+矩陣矩陣
- 序列(dp+矩陣加速)矩陣
- 演算法之DP——01矩陣演算法矩陣
- 巨大的數(dp+矩陣加速)矩陣
- 幸運數(dp+矩陣加速)矩陣
- 動態dp & 矩陣加速遞推矩陣
- CUDA 矩陣乘法終極優化指南矩陣優化
- [BZOJ4818][Sdoi2017][容斥原理][矩陣優化DP]序列計數矩陣優化
- 手把手教你將矩陣&概率畫成圖矩陣
- 基於概率的矩陣分解原理詳解(PMF)矩陣
- 概率DP入門題
- THREE 矩陣優先原則和平移旋轉矩陣矩陣
- BZOJ 3329 Xorequ:數位dp + 矩陣快速冪矩陣
- 概率DP總結 by kuangbin
- HDU 3853 LOOPS(概率dp)OOP
- 矩陣相乘優化演算法實現講解矩陣優化演算法
- HDU 5318 The Goddess Of The Moon(遞推+矩陣優化)Go矩陣優化
- 概率論12 矩與矩生成函式函式
- 【DP】斜率優化初步優化
- SGU 495 Kids and Prizes:期望dp / 概率dp / 推公式公式
- HDU 4427 Math Magic【dp+優化+滾動陣列】【好題】優化陣列
- codeforces 148 D 概率dp
- bzoj 4899 記憶的輪廓 題解(概率dp+決策單調性優化)優化
- NOIP2014pj子矩陣[搜尋|DP]矩陣
- 轉移概率矩陣------3Q大戰背後的數學矩陣
- “機會潛在利潤一企業成功概率”矩陣(轉載)矩陣
- 斜率優化DP總結優化
- 生成螺旋矩陣(方陣、矩陣)矩陣
- 斜率優化(凸包優化)DP問題acm優化ACM
- 鄰接矩陣、度矩陣矩陣
- 巨大的矩陣(矩陣加速)矩陣
- openjudge1768 最大子矩陣[二維字首和or遞推|DP]矩陣
- HDU3519Lucky Coins Sequence(DP+矩陣加速)矩陣
- 奇異矩陣,非奇異矩陣,偽逆矩陣矩陣
- 自媒體矩陣怎麼打造?自媒體矩陣有什麼優勢?矩陣
- Codeforces 909C Python Indentation:樹狀陣列優化dpPython陣列優化
- hdu 4089||2011年北京現場賽I題 概率dp(公式不好推)公式
- Codeforces 148D Bag of mice:概率dp 記憶化搜尋