日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

牛客网专题 概率dp

發布時間:2023/12/3 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 牛客网专题 概率dp 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

    • 概念:
  • 例題
    • 引入:
      • 解答:
    • Happy Running NC15532
      • 題意:
      • 題解:
      • 代碼:
    • poj2096 NC106693 Collecting Bugs
      • 題意:
      • 題解:
      • 代碼:
    • NC210477 帶富翁
      • 題意:
      • 題解:
      • 代碼:
    • NC210481 篩子游戲
      • 題意:
      • 題解:
      • 代碼:
    • NC210487 食堂
      • 題意:
      • 題解:
      • 代碼:
  • 習題
    • CF148D Bag of mice
    • CF16E Fish
    • CF235B Let's Play Osu!
    • NC14378 珂學送分
    • NC20263 [SCOI2008] 獎勵關
    • NC20709 Balls
    • NC210515 迷宮游戲
    • NC210516 抽卡

概念:

概率
期望:數學期望(mean)(或均值,亦簡稱期望)是試驗中每次可能結果的概率乘以其結果的總和,是最基本的數學特征之一。它反映隨機變量平均取值的大小。

例題

引入:

甲乙兩個人賭博,他們兩人獲勝的機率相等,比賽規則是先勝三局者為贏家,贏家可以獲得
100法郎的獎勵。當比賽進行到第四局的時候,甲勝了兩局,乙勝了一局,這時由于某些原
因中止了比賽,那么如何分配這100法郎才比較公平?

解答:

乙獲勝概率是1/4,甲是3/4,所以按照這個分錢

Happy Running NC15532

題意:

小明需要在操場順時針跑圈打卡,操場上有兩個打卡點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前:此時所跑距離小于等于一圈
列出相關式子:
K < X
A < B
B > = K
A < = x
B < = x
概率為圖中陰影部分占整個正方形


情況2:
A在B后:

情況3:
K == X時,(其實是求B在A前的概率)也就是0.5

代碼:

poj2096 NC106693 Collecting Bugs

題意:

題意:
一個軟件有s個子系統,會產生n種bug。
某人一天發現一個bug,這個bug屬于某種bug,發生在某個子系統中。
求找到所有的n種bug,且每個子系統都找到bug,這樣所要的天數的期望。
需要注意的是:bug的數量是無窮大的,所以發現一個bug,出現在某個子系統的概率是1/s,
屬于某種類型的概率是1/n。
? (0 < n, s <= 1 000)
? 輸入:
? 1 2
? 輸出:
? 3.00000

題解:

? f[i][j]表示現在已經找到的bug有i種,屬于j個系統,找完剩下所需bug的期望天數。
? 已知:f[n][s]=0,因為已經達到目標, 而要求的答案是f[0][0]
dp[i][j]狀態可以轉化成以下四種:
dp[i][j] 發現一個bug屬于已經找到的i種bug和j個子系統中
dp[i+1][j] 發現一個bug屬于新的一種bug,但屬于已經找到的j種子系統
dp[i][j+1] 發現一個bug屬于已經找到的i種bug,但屬于新的子系統
dp[i+1][j+1]發現一個bug屬于新的一種bug和新的一個子系統
以上四種的概率分別為:
p1 = i * j / (n * s)
p2 = (n-i) * j / (n * s)
p3 = i * (s-j) / (n * s)
p4 = (n-i)* (s-j) / (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 + (n-i) * j * dp[i+1,j] + i*(s-j) * dp[i,j+1] + (n-i) * (s-j) * 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,并且小明現在站在i這個位置,小明就會向前進x步到達i+x這個位置。
? 如果小明扔出了x并且i+x已經大于了n,那么小明就會重新扔,直到i+x在合適的位置。小明
最后如果到達了n號位置,那么小明就會結束游戲,現在小明想知道自己期望的得分是多少。

題解:

? f[i]表示從i走到n獲得的金子的期望,
? i+6 <= n 即不會走出去:f[i] = a[i] + ∑(1/6 * f[j]) ( i+1<=j<=i+6)
? i+6>n f[i] = (f[i + 1] + … + f[n]) / (n - i)。

代碼:

NC210481 篩子游戲

題意:

? 吉吉國王正在玩一款手游,這個手游的規則非常簡單。一開始你會得到三個篩子,三個篩子分別有k1,k2,k3面,也就是說分別可以扔出[1,k1],[1,k2],[1,k3]之間數。
? 一開始的分數為0,每次扔篩子都會扔出x,y,z三個數,但是這個游戲的特別之處在于每次開
局都會給定三個數a,b,c,如果滿足x=a,y=b,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
? 每個狀態都和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個人排隊,Tomato排在第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];

代碼:

習題

CF148D Bag of mice

CF16E Fish

CF235B Let’s Play Osu!

NC14378 珂學送分

NC20263 [SCOI2008] 獎勵關

NC20709 Balls

NC210515 迷宮游戲

NC210516 抽卡

總結

以上是生活随笔為你收集整理的牛客网专题 概率dp的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。