有個人有兩個0分賬號,他可以打比賽,他每次用分低的那個賬號打比賽,
有p的概率名列前茅,加50分(上限1000分)
否則掉100分(下限0分)。問有乙個賬號到1000分的期望。
先壓縮一下狀態,把50
5050
看作1
11,把100
10010
0看作2
22,把1000
1000
1000
看作20
2020
那麼就是乙個dp[
20][20
]dp[20][20]
dp[20]
[20]
的方程表示最高分是i
ii,次高分是j
jj的期望步數
d p[
i][j
]=dp
[ii]
[jj]
∗p+d
p[ii
i][j
jj]∗
(1−p
)+
1dp[i][j]=dp[ii][jj]*p+dp[iii][jjj]*(1-p)+1
dp[i][
j]=d
p[ii
][jj
]∗p+
dp[i
ii][
jjj]
∗(1−
p)+1
其中ii,j
jii,jj
ii,j
j是贏得比賽加分後的狀態,iii
,jjj
iii,jjj
iii,jj
j是輸掉比賽…
但是j
jj依賴前面比j
jj小的和後面比j
jj大的
這樣就直接上高斯消元了.
#include
using
namespace std;
int id[
509]
[509];
double mp[
509]
[509
],ans[
509]
,p;void
add(
int i,
int j,
double w)
void
guess
(int n)
//第n列是等式的右邊
} ans[n]
= mp[n]
[n+1];
for(
int i=n-
1;i>=
1;i--)}
intmain()
guess
(num)
;printf
("%.6lf\n"
,ans[1]
);}}
hdu 4870 Rating 高斯消元 遞推
題意 給定乙個概率p,做一道題有p概率成功,1 p 概率失敗。成功分數 50,最高1000 失敗分數 100,最低0分。現有兩個賬號,每次選擇分數低的賬號去做題,問其中乙個賬號達到1000分的期望次數。題解 1 高斯消元法 得分必須是f 0,0 f 0,50 f 50,50 f 950,950 f ...
HDU 4870 Rating 高斯消元法
題意 用兩個賬號去參加一種比賽,初始狀態下兩個賬號都是零分,每次比賽都用分數低的賬號去比賽。有p的概率取勝,相應賬號分數 50分,否則相應賬號分數下降100分,問當有乙個賬號分數達到1000分時參加比賽次數的數學期望是多少。思路 比賽期間以為是一道推公式的題,推了半天沒什麼收穫。賽後想了想。看了解題...
hdu4870 高斯消元
題意 乙個人打比賽 rating 有p的概率 為加50分 有1 p的概率為 x 100分 最大值為 1000 最小值為0 有兩個號 每次拿較小的號來提交 計算最後到達 1000分得期望場數是多少,對每個狀態建立乙個方程然後用高斯消元解決 include include include include...