題意:起點為1,走一步的概率為p, 走兩步的概率為1-p,
有n個地雷, 給出地雷所在的位置,求安全避過所有地雷的概率
思路:注意特判地雷在1位置和兩個地雷相隔單位1的情況的結果都是0
設x[i]為走距離為i時的概率
安全距離為a的概率= x[a - 1] * p + x[a - 2] * (1 - p)
知道這個通式後就用矩陣快速冪啦
1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include8 #include 9 #include 10 #include 11
#define inf 0x3f3f3f3f
12using
namespace
std;
1314
int n, x[20
];15
double
p;16
struct
node;
19node mul(node p, node l)
2028
double juz(int
x)29
48return m.res[0][0] * p + m.res[0][1
];49}50
intmain()
5166
if(x[i] == x[i - 1
])67
continue
;68 res *= juz(x[i] - x[i - 1] - 2) * (1 -p);69}
70 printf("
%.7f\n
", res);71}
72return0;
73 }
poj 3744 概率dp 矩陣快速冪
poj 3744 題目大概是 小明要走一段路 有p的概率走一步 1 p 的概率走兩步 然後上面有雷 問安全通過的概率 題目通過雷把路程分為多段 把每段安全通過的概率相乘 就是整段安全通過的概率 設dp i 是小明安全到i的概率 到i的方式有兩種 一種是從 i 1 走一步 第二種是從 i 2 走兩步 ...
POJ3744題解 概率dp,矩陣快速冪
士兵從起點1出發,每次移動有p的概率走一步,有1 p的概率走兩步,已知有n個格仔有地雷,問士兵不踩地雷的概率。第一道真正意義上的概率dp題目,一開始打算令dp i 意為更新到i點時踩雷的概率,dp i p dp i 1 1 p dp i 2 這樣寫看上去也是對的 第一眼看上去的角度上來說 但是其實並...
poj3744 概率dp 矩陣乘法
在一條路上有n個地雷,有個sb人按照心情走在這條路上,往前走1步的概率是p,往前走2步的概率是 1 p 求他活著走過這條路的概率。很容易想到一種dp方程 f i p f i 1 1 p f i 2 然而一看範圍 1,100000000 怎麼可能不超時呢 然後可以這麼想 只要避開了最後乙個地雷不就安全...