hdu4576 (概率dp 狀態轉移技巧)

2021-10-08 15:07:11 字數 1570 閱讀 1007

題意:機械人在乙個有n

nn個格仔的圓形上,初始在1

11號位,接下來給m

mm個指令,每個指令代表從當前格仔向乙個方向移動x

xx格,由於機械人方向感應有問題,所以會隨機逆時針或順時針移動x

xx格。問m

mm個指令後,落在[l,

r]

[l,r]

[l,r

]的概率。

資料範圍:1≤n

≤200,0

≤m≤1

06

1\leq n\leq 200,0\leq m\leq 10^6

1≤n≤20

0,0≤

m≤10

6題解:f[n

ow][

i]

f[now][i]

f[now]

[i]表示當前執行了now

nowno

w個指令,到達了第i

ii格的概率,初始化為f[0

][1]

=1

f[0][1]=1

f[0][1

]=1。

由於n mnm

nm為1 08

10^8

108級別,故空間**,考慮執行第now

nowno

w個指令只與執行到了now

−1

now-1

now−

1個指令有關,所以可以模2

22來更新狀態,最後為0/1

0/10/

1則統計f[0

/1][

l,r]

f[0/1][l,r]

f[0/1]

[l,r

]的概率即可。

**:

#include

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace std;

int n, m, l, r;

const

int n =

210;

inline

intread()

while

(isdigit

(ch)

)return x * f;

}double f[2]

[n];

//兩個狀態是為了區分上乙個狀態和當前狀態

intmain()

now ^=1

;}double res =0;

for(

int i = l; i <= r; i++

) res +

= f[now]

[i];

printf

("%.4lf\n"

, res);}

}

注意:本題很卡時間,建議快讀。

hdu4336(概率DP 狀態壓縮)

題意 要收集n張卡片,得到每張卡片的概率為pi,所有的pi之和不一定為1 思路 這題的n只有20,所以可以用狀態壓縮,由於數學知識不給力,思路是隊友給的,設所有卡片的集合為u,已經擁有的卡片集合為s,初始態s 最終的狀態為s u,狀態轉移為dp i 1 p1 dp j1 p2 dp j2 其中dp ...

HDU 1176 免費餡餅 DP多種狀態轉移

都說天上不會掉餡餅,但有一天gameboy正走在回家的小徑上,忽然天上掉下大把大把的餡餅。說來gameboy的人品實在是太好了,這餡餅別處都不掉,就掉落在他身旁的10公尺範圍內。餡餅如果掉在了地上當然就不能吃了,所以gameboy馬上卸下身上的揹包去接。但由於小徑兩側都不能站人,所以他只能在小徑上接...

HDU4800 二維dp 狀態轉移很靈活

題意 n種隊伍,每兩個隊伍i,j之間pk,i 贏的概率是pk i j m輪pk,雙方開始各選乙隻隊伍,若你打敗了對手,你可以選擇在下一次更換成他手上的隊伍,假設你每次都選擇最容易最終獲勝的方法,求連續打贏m場概率的最大的概率。分析 dp i j 表示用j號隊員打敗了第i個對手的最大的概率。昨天晚上一...