題意:用兩個賬號去參加一種比賽,初始狀態下兩個賬號都是零分,每次比賽都用分數低的賬號去比賽。有p的概率取勝,相應賬號分數**50分,否則相應賬號分數下降100分,問當有乙個賬號分數達到1000分時參加比賽次數的數學期望是多少。
思路:比賽期間以為是一道推公式的題,推了半天沒什麼收穫。
賽後想了想。看了解題報告以後。知道了這樣的每乙個分數相應狀態受到兩個狀態以上推得而且不是從後向前推得情況能夠用高斯消元來解。狀態0~狀態209分別代表者分數為(0,0),(50,0)...(950,950)到有乙個賬號的分數為1000的數學期望。e(x,y)=p(e(x1,y1)+1)+(1-p)(e(x2,y2)+1),(x1,y1)代表著這次比賽取勝之後兩個賬號的分數,(x2,y2)代表著這次比賽失敗之後兩個賬號的分數。
狀態中不用計入狀態(1000,?)是由於除了(1000,950)外其它狀態不會出現。而(1000,950)狀態僅僅與狀態(950,950)有關,而且(950,950)不會從(1000,950)得到,210個狀態中沒有狀態是與(1000,?
)狀態相關,所以不須要處理。
**:
#include #include #include #include #include #include #include #include #include #include #include #include #include #define pi acos(-1.0)
#define maxn 210
#define inf 0x7fffffff
#define eps 1e-8
#define mod 1000000009
typedef long long ll;
typedef unsigned long long ull;
using namespace std;
double a[220][220],b[220];
int all[25];
double gauss_elimination(int n)
if(fabs(maxp)eps)
b[j] -=b[k]*x;}}
}return 1;
}int init()
return 0;
}int main()}}
gauss_elimination(210);
printf("%.6lf\n",b[0]/a[0][0]);
}return 0;
}
HDU4870 Rating 高斯消元
有個人有兩個0分賬號,他可以打比賽,他每次用分低的那個賬號打比賽,有p的概率名列前茅,加50分 上限1000分 否則掉100分 下限0分 問有乙個賬號到1000分的期望。先壓縮一下狀態,把50 5050 看作1 11,把100 10010 0看作2 22,把1000 1000 1000 看作20 2...
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 ...
hdu4870 高斯消元
題意 乙個人打比賽 rating 有p的概率 為加50分 有1 p的概率為 x 100分 最大值為 1000 最小值為0 有兩個號 每次拿較小的號來提交 計算最後到達 1000分得期望場數是多少,對每個狀態建立乙個方程然後用高斯消元解決 include include include include...