題意:麥田的故事,n張牌,取x張牌,記住前x張牌最大的值m,繼續往后取,遇到第一張比m大的牌就停下來。求一個x使得最后的牌在整副牌里是最大的期望最大。
假設最大的牌是A,A在各種位置出現的概率就是相等的,因為題目不要求輸出概率,所以當成1。在A固定的情況下,在它前面的牌中最大的牌B,出現在各個位置的概率也是相等的,計算一下各個事件的概率。
當X固定的時候,B出現在它前面的事件概率和就是成功的概率,所以問題就轉化成了求一個X,使得下面這個矩形框中的概率和最大。
樣例,n=5
codeforces官方題解,
?并不需要用組合數打表算概率
#include<bits/stdc++.h>int main() {int n;scanf("%d",&n);int X = 0;double E = 1./n;for(int x = 1; x < n; x++){double e = 1;for(int j = x+1; j < n; j++)e += x*1.0/j;if(e>E) { X = x; E = e; }}printf("%d\n",X);return 0; }
?
?