換教室
方程不難推…出思路太慢了…
定義d p[
i][j
]dp[i][j]
dp[i][
j]為第i
ii個時間段花費了j
jj次機會的最小路程
但是無法轉移…因為我們不知道上一次在哪個地點
那麼定義dp[
i][j
][0/
1]表示
本次是否
申請換教
室dp[i][j][0/1]表示本次是否申請換教室
dp[i][
j][0
/1]表
示本次是
否申請換
教室但是這樣還是沒有確切知道在哪個地點啊!!
既然是概率期望,就應該知道
對於d p[
i][j
][0]
dp[i][j][0]
dp[i][
j][0
],100
%100\%
100%
在c
ic_i
ci位置
對於d p[
i][j
][1]
dp[i][j][1]
dp[i][
j][1
],pi
p_ipi
概率在d
id_i
di位置,1−p
i1-p_i
1−pi
概率在d
id_i
di位置
所以轉移很明了了,列舉本次和上次的狀態,根據概率來轉移即可
#include using namespace std;
const int inf=1e9;
const int maxn=2009;
int n,m,v,e,c[maxn],d[maxn];
double p[maxn],dis[maxn][maxn],ans=1e9,dp[maxn][maxn][2];
void floyd()
for(int k=1;k<=v;k++)
for(int i=1;i<=v;i++)
for(int j=1;j<=v;j++)
dis[i][j]=min( dis[i][j],dis[i][k]+dis[k][j] );
}int main()
dp[i][j][1]=min( q,w );
if( i==n )
ans=min( ans,min(dp[i][j][0],dp[i][j][1]) );
} } if( n==1 ) ans=0;
printf("%.2lf",ans);
}
P1850 換教室 題解
題意 有 v 間教室,教室之間有 e 條雙向邊連線,從乙個教室走到另乙個教室需要一 定時間.有 n 節課,第 i 節課有兩間教室,預設要去第 c i 間教室,可以申請到 第 d i 間教室去,申請通過的概率為 p i 所有申請必須在最開始提交.求出提 交申請個數不超過 m 的情況下,依次上完這 n ...
P1850 換教室 概率dp
其實說是概率dp,本質上和dp沒什麼區別,就是把所有可能轉移的情況全列舉一下就行了,不過dp方程確實有點長。ps 這個題的floyed我竟然之前寫跪了。題目 題目描述 對於剛上大學的牛牛來說,他面臨的第乙個問題是如何根據實際情況申請合適的課程。在可以選擇的課程中,有 2n2n2n 節課程安排在 nn...
P1850 換教室 期望DP
對於剛上大學的牛牛來說,他面臨的第乙個問題是如何根據實際情況申請合適的課程。在可以選擇的課程中,有 2n2n2n 節課程安排在 nnn 個時間段上。在第 iii 1 i n1 leq i leq n1 i n 個時間段上,兩節內容相同的課程同時在不同的地點進行,其中,牛牛預先被安排在教室 cic i...