Niuke.comトピック確率dp

概念:

確率の
期待値:数学期待値(平均)(または平均、期待値とも呼ばれます)は、実験で考えられる各結果の確率に、その結​​果の合計を掛けたものです。これは、最も基本的な数学的特性の1つです。確率変数の平均値を反映しています。

導入する:

2人のプレーヤーがギャンブルをし、どちらも勝つ確率は同じです。ゲームのルールでは、勝者が最初に3つのゲームに勝ち、勝者
は100フランの報酬を得ることができます第4ラウンドに進むと、Aが2ラウンド、Bが1
ラウンド勝ちましたが、今回は何らかの理由でゲームが中断されたので、100フランの分配方法はもっと公平ですか?

回答:

Bが勝つ確率は1/4、Aが勝つ確率は3/4なので、これに従ってお金が分けられます。

ハッピーランニングNC15532

題名:

Xiao Mingは、遊び場で時計回りに走って出勤する必要があります。遊び場には2つの出勤ポイントAとBがあり、最初にポイントAで、次にポイントBで出勤する必要があります(ポイントBがポイントの前にある場合でも) A)、カードを終えて終了することができます。走った後、彼の開始点と点AとBの位置はランダムです。遊び場の長さXメートルを教えて、彼が走る必要がある確率を見つけてくださいKメートル以上。
最初にKを入力し、次にX
入力を入力します。

3 
2 2
4 3
2 1

•出力:

0.50
0.22
0.00

回答:

開始点を修正し、
さまざまなカテゴリで話し合います。ケース1:
AがBの前にある場合:この時点での走行距離は1円以下です。
関連する式をリストしてください:
K <X
A <B
B> = K
A <= x
B <= x
確率は図に示されています中央の陰影は正方形全体を占めて
います。ここに画像の説明を挿入

ここに画像の説明を挿入
ケース2:
AはBの後にあります:
ここに画像の説明を挿入
ケース3:
K == Xの場合(実際、BがAの前にある確率)は0.5です。

コード:

poj2096NC106693バグの収集

題名:

質問の意味:
ソフトウェアにはサブシステムがあり、n種類のバグが発生します。
誰かが1日でバグを見つけます。このバグは特定の種類のバグに属し、特定のサブシステムで発生します。
n種類すべてのバグを見つけ、各サブシステムでバグを見つけようとしているので、予想される日数が必要です。
バグの数は無限であるため、バグが見つかった場合、特定のサブシステムに出現する確率は1 / sであり
、特定のタイプに属する確率は1 / nであることに注意してください
•(0 <n、s <= 1 000)
•入力:
•1 2
•出力:
•3.00000

回答:

•f [i] [j]は、jシステムに属するi種類のバグが検出され、必要なバグが検出されてから予想される日数があることを意味します。
•既知:f [n] [s] = 0、目標が達成され、必要な答えはf [0] [0]
dp [i] [j]であるため、状態は次の4つの状態に変換できます。
dp [i] [j]バグは、見つかったiバグとjサブシステムの
dp [i + 1] [j]に属することが判明しましたバグは新しい種類のバグであることが判明しましたが、所属しています。見つかったjシードシステムへ
dp [i] [j + 1]バグは見つかったiバグに属していることがわかりましたが、新しいサブシステムに属しています
dp [i + 1] [j +1]バグは新しい種類のバグと新しいサブシステム、
または4つ以上に属することが判明した確率は次のとおりです
。p1= i * j /(n * s)
p2 =(ni)* j /(n * s)
p3 = i *( sj)/(n * s)
p4 =(ni)*(sj)/(n * s)そして
E(aA + bB +…)= aE(A)+ bE(B)、
dp [i、j] = p1 * dp [i、j] + p2 * dp [i + 1、j] + p3 * dp [i、j + 1] + p4 * dp [i + 1、j + 1] + 1;
dp [i、 j] =(1 + p2 * dp [i + 1、j] + p3 * dp [i、j + 1] + p4 * dp [i + 1、j + 1])/(1-p1)
=(n * s +(ni)* j * dp [i + 1、j] + i *(sj)* dp [i、j + 1] +(ni)*(sj)* dp [i + 1、 j + 1])/(n * s-i * j)

コード:

#include<iostream>
#include<cstdio>
#include<cstring>

using namespace std;

const int N=1010;

double dp[N][N];

int main(){
    
    

    //freopen("input.txt","r",stdin);

    int n,s;
    while(~scanf("%d%d",&n,&s)){
    
    
        dp[n][s]=0;
        for(int i=n;i>=0;i--)
            for(int j=s;j>=0;j--){
    
    
                if(i==n && j==s)
                    continue;
                dp[i][j]=(i*(s-j)*dp[i][j+1]+(n-i)*j*dp[i+1][j]+(n-i)*(s-j)*dp[i+1][j+1]+n*s)/(n*s-i*j);
            }
        printf("%.4f\n",dp[0][0]);
    }
    return 0;
}

金持ちとNC210477

題名:

•シャオミンは金持ちとゲームをしています。具体的には、このゲームにはn個のポイントがあり、各ポイントには特定のポイントがあります。
最初、彼はポジション1にいました。彼が6面のふるいを投げるたびに、それがxに到達し、Xiao Mingが現在iに立っている場合、XiaoMingはxステップ前進してi + xに到達します。
•XiaoMingがxをスローし、i + xがnより大きい場合、XiaoMingはi + xが適切な場所に配置されるまで再度スローします。
最後に、Xiao Mingが位置nに到達すると、Xiao Mingはゲームを終了します。XiaoMingは、期待するスコアを知りたいと考えています。

回答:

•f [i]は、iからnまでに得られる金の期待値を表し
ます。•i + 6 <= nは、金が消えないことを意味します。f[i] = a [i] + ∑(1/6 * f [ j])(i + 1 <= j <= i + 6)
•i + 6> nf [i] =(f [i + 1] +…+ f [n])/(n-i)。

コード:

NC210481ふるいゲーム

題名:

•キングジジはモバイルゲームをプレイしています。このモバイルゲームのルールは非常にシンプルです。最初は3つのふるいがあります.3つのふるいにはk1、k2、k3の辺があります。つまり、[1、k1]、[1、k2]、[1、k3]の間の数字を捨てることができます。
•0の始まりをスコアリングすると、すべてのスローでふるいx、y、zの3つの数字がスローされますが、このゲームは
、x = a、y = bが満たされた場合、すべてのオープンオフィスに3つの数字a、b、cが与えられるという点でユニークです。、z = cの場合、スコアはクリアされます。それ以外の場合、スコアはx + y + zを追加します。ここで、ジジ王は、スコアをnより大きくするために必要なスローの数を知りたいと考えています。•0≤n≤500

回答:

•f [i]は、iに到達したときにターゲット状態に到達する期待値を示し、pkはkポイントをスローする確率、p0は0に戻る確率です。これは最初に前処理されます。
次にf [i] = ∑ (pk * f [i + k])+ f [0] * p0 + 1
•f [i] = ∑(pk * f [i + k])+ f [0] * p0 + 1
•各状態が合計されますwith f [0]は関連しており、f [0]は私たちが探しているものであり、定数です
。•f [i] = A [i] * f [0] + B [i]とします。
•右を代入します。上記の式の次の式を取得します。
•f [i] = ∑(pk * A [i + k] * f [0] + pk * B [i + k])+ f [0] * p0 + 1 =
• (∑(pk * A [i + k])+ p0)f [0] + ∑(pk * B [i + k])+ 1;
•したがって、A [i] =(∑(pk * A [i + k])+ p0)B [i] = ∑(pk * B [i + k])+ 1
•最初にA [0]とB [0]を再帰的に見つけ、次にf [0] = B [0] /( 1-A [0]);

コード:

NC210487食堂

題名:

ここに画像の説明を挿入

•1≤k≤m≤n≤2000

回答:

•f [i] [j]がi個の個別のキューイングを表すとし、トマトはj番目の位置にランク付けされ、ターゲット状態に到達する確率(j <= i)
•f [n] [m]は必要なものです
•j == 1:f [i] [1] = p1 * f [i] [1] + p2 * f [i] [i] + p4;
•2 <= j <= k:f [i] [j] = p1 * f [i] [j] + p2 * f [i] [j-1] + p3 * f [i-1] [j-1] + p4;
•k <j <= i:f [i ] [j] = p1 * f [i] [j] + p2 * f [i] [j-1] + p3 * f [i-1] [j-1];

コード:

おすすめ

転載: blog.csdn.net/qq_35975367/article/details/108431531