【概率期望】題目總結
今天講了講數學,期望這做了四道題,一塊寫個部落格記一下
CF540D Bad Luck Island
容易想到設
表示剩下
個
,
個
,
個
時候的概率,然後列舉遇見的是哪兩種人,算一下概率就好了,但算的時候注意不能直接算,因為同種的人不能遇見,所以要減掉
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
#define maxn 105
using namespace std;
int r,s,p;
double f[maxn][maxn][maxn],ans[3];
int main(){
scanf("%d%d%d",&r,&s,&p);
f[r][s][p]=1;
for(int i=r;i>=0;i--)
for(int j=s;j>=0;j--)
for(int k=p;k>=0;k--){
if(j && i)
f[i][j-1][k]+=f[i][j][k]*2*i*j/(double)((i+j+k)*(i+j+k-1)-i*(i-1)-j*(j-1)-k*(k-1));
if(k && j)
f[i][j][k-1]+=f[i][j][k]*2*j*k/(double)((i+j+k)*(i+j+k-1)-i*(i-1)-j*(j-1)-k*(k-1));
if(i && k)
f[i-1][j][k]+=f[i][j][k]*2*i*k/(double)((i+j+k)*(i+j+k-1)-i*(i-1)-j*(j-1)-k*(k-1));
}
for(int i=r;i>=0;i--) ans[0]+=f[i][0][0];
for(int i=s;i>=0;i--) ans[1]+=f[0][i][0];
for(int i=p;i>=0;i--) ans[2]+=f[0][0][i];
printf("%.12lf %.12lf %.12lf\n",ans[0],ans[1],ans[2]);
return 0;
}
CF696B Puzzles
因為對於一個節點
,它父親的子節點在它前面的概率都是
,所以就可以預處理節點
,
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
#define N 100005
using namespace std;
inline int rd(){
int x=0,f=1;char c=' ';
while(c<'0' || c>'9') f=c=='-'?-1:1,c=getchar();
while(c<='9' && c>='0') x=x*10+c-'0',c=getchar();
return x*f;
}
int n,siz[N],cnt,to[N],nxt[N],head[N];
double f[N];
inline void add(int x,int y){
to[++cnt]=y; nxt[cnt]=head[x]; head[x]=cnt;
}
void dfs1(int u,int fa){
siz[u]=1;
for(int i=head[u];i;i=nxt[i]){
int v=to[i]; if(v==fa)continue;
dfs1(v,u); siz[u]+=siz[v];
}
}
void dfs2(int u,int fa){
for(int i=head[u];i;i=nxt[i]){
int v=to[i]; if(v==fa)continue;
f[v]=f[u]+0.5*(siz[u]-siz[v]+1);
dfs2(v,u);
}
}
int main(){
n=rd();
for(int i=2;i<=n;i++){
int fa=rd(); add(fa,i);
}
f[1]=1;
dfs1(1,0); dfs2(1,0);
for(int i=1;i<=n;i++) printf("%.1lf ",f[i]);
return 0;
}
CF16E Fish
列舉還剩下的魚的集合,然後列舉那兩個魚遇見,算每條魚被吃掉的概率
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
#define maxn 20
using namespace std;
int n,ed,cnt[(1<<18)+5];
double a[maxn][maxn],f[(1<<18)+5];
inline int calc(int x){
int ret=0;
while(x){
if(x&1) ++ret; x>>=1;
} return ret;
}
int main(){
scanf("%d",&n); ed=1<<n;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
scanf("%lf",&a[i][j]);
for(int i=0;i<ed;i++) cnt[i]=calc(i);
f[ed-1]=1;
for(int i=ed-1;i>=1;i--)
for(int j=1;j<=n;j++)
if((1<<(j-1))&i)
for(int k=j+1;k<=n;k++)
if((1<<(k-1))&i){
f[i^(1<<(k-1))]+=f[i]*2*a[j][k]/cnt[i]/(cnt[i]-1);
f[i^(1<<(j-1))]+=f[i]*2*a[k][j]/cnt[i]/(cnt[i]-1);
}
for(int i=1;i<=n;i++)
printf("%.6lf ",f[1<<(i-1)]);
return 0;
}
CF601C Kleofáš and the n-thlon
一個有意思的題
注意到除了給定的這個人,其他人的水平都是一樣的,這意味著我們可以先算出一個人的,再 就是其他所有人的,所以就可以設 表示前 場比賽得到了 分的概率,這樣給定人的排名期望就是分數比他小的那些值的和再
滾動陣列優化一下空間,然後記一個字首和優化時間複雜度
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
#define maxn 105
#define maxm 100005
using namespace std;
inline int rd(){
int x=0,f=1;char c=' ';
while(c<'0' || c>'9') f=c=='-'?-1:1,c=getchar();
while(c<='9' && c>='0') x=x*10+c-'0',c=getchar();
return x*f;
}
int n,m,sc,a[maxn];
double f[2][maxm],sum,ans;
int main(){
n=rd(); m=rd();
for(int i=1;i<=n;i++){
a[i]=rd(); sc+=a[i];
}
if(m==1) return puts("1"),0;
f[0][0]=1; int now=1;
for(int i=1;i<=n;i++){
sum=f[now^1][0]; memset(f[now],0,sizeof f[now]);
for(int j=1;j<=n*m;j++){
f[now][j]+=sum,sum+=f[now^1][j];
if(j>=a[i]) f[now][j]-=f[now^1][j-a[i]];
if(j>=m
相關推薦
【概率期望】題目總結
今天講了講數學,期望這做了四道題,一塊寫個部落格記一下
CF540D Bad Luck Island 容易想到設
f
[
BZOJ 2752 [HAOI2012]高速公路(road)【線段樹】【概率期望】
顯然, 概率期望是一個幌子。
設i−>i+1i->i+1i−>i+1的邊長為a[i]a[i]a[i],那麼對於詢問區間[l,r][l,r][l,r],易知答案為(注意邊轉點對區間的小影響):
ans=∑i=lra[i]∗(r+1
poj 2096 Collecting Bugs 【概率DP】【逆向遞推求期望】
tdi cor ros quick -a sim total 3.0 pla
Collecting Bugs
Time Limit: 10000MS
Memory Limit: 64000K
Total Submissions
BZOJ4481: [Jsoi2015]非誠勿擾【概率期望+樹狀陣列】
Description
【故事背景】 JYY趕上了網際網路創業的大潮,為非常勿擾開發了最新的手機App實現單身 大齡青年之間的“速配”。然而隨著使用者數量的增長,JYY發現現有速配的演算法似 乎很難滿足大家的要求,因此JYY決定請你來調查一下其中的原因。 【問題描述】 應用的後臺一共有N個女性和M個男性,他
BZOJ4899: 記憶的輪廓【概率期望DP】【決策單調性優化DP】
Description
通往賢者之塔的路上,有許多的危機。
我們可以把這個地形看做是一顆樹,根節點編號為1,目標節點編號為n,其中1-n的簡單路徑上,編號依次遞增,
在[1,n]中,一共有n個節點。我們把編號在[1,n]的叫做正確節點,[n+1,m]的叫做錯誤節點。一個葉子,如果是正
確節點則為正確葉
BZOJ3925: [Zjoi2015]地震後的幻想鄉【概率期望+狀壓DP】
Description
傲嬌少女幽香是一個很萌很萌的妹子,而且她非常非常地有愛心,很喜歡為幻想鄉的人們做一些自己力所能及的事情來幫助他們。 這不,幻想鄉突然發生了地震,所有的道路都崩塌了。現在的首要任務是儘快讓幻想鄉的交通體系重新建立起來。幻想鄉一共有n個地方,那麼最快的方法當然是修復n-1條道路將這n個地
NOIP模擬 取書問題【概率期望dp】
題目描述
有n個同學坐成一列,按從前往後的順序傳n本書,第i本數是第i新的,其中第i個同學會從n-i+1本課本中選一本並把剩下的書傳給後面的一位同學,第i個同學在挑選課本的時候滿足 如下過程: 1.如果只剩一本書,則一定拿走,否則轉步驟2; 2.從剩下的數中抽出最新的一本。 3.有
【概率dp】【滾動數組】CDOJ1652 都市大飆車
ima 空間 pac names puts 都市 for 1.0 images
轉移方程很顯然。
因為是多段圖模型,所以可以滾動數組優化一維空間。
#include<cstdio>
#include<cstring>
using namespac
【程序5】 題目:利用條件運算符的嵌套來完成此題:學習成績>=90分的同學用A表示,60-89分之間的用B表示,60分以下的用C表示。 1.程序分析:(a>b)?a:b這是條件運算符的基本例子。
window code 例子 prompt 利用 學習 amp text span if…else語句相對比較多,但是容易理解
1 var scroe = window.prompt("請輸入1-100之間的數")
2 scroe = parseInt
2017 ACM-ICPC 亞洲區(西安賽區)網絡賽: B. Coin 【概率題】
con ont mat -1 bottom using -m desc element
Bob has a not even coin(就是一個不均勻的硬幣,朝上的概率不一定是1/2), every time he tosses the coin, the probab
POJ3071 Football 【概率dp】
mem down matches pre opposite side instead losers rec 題目
Consider a single-elimination football tournament involving 2n teams, denoted 1,
【概率機器人】3.1 卡爾曼濾波、擴展卡爾曼濾波和無跡卡爾曼濾波
取出 嘗試 bar return tar 簡化 exp 回顧 clas 這一章將介紹卡爾曼濾波、擴展卡爾曼濾波以及無跡卡爾曼濾波,並從貝葉斯濾波的角度來進行分析並完成數學推導。如果您對貝葉斯濾波不了解,可以查閱相關書籍或閱讀 【概率機器人 2 遞歸狀態估計】。
這三種濾波方
bzoj 3029: 守衛者的挑戰【概率dp】
滾動數組 ios ble \n 轉移 spa min print amp 以後寫dp還是向後轉移吧……寫的把前面加起來的版本怎麽也調不過去
首先註意,因為地圖碎片只占1體積,所以>n,<-n的體積是沒用的,所以就可以把體積降到n級別,然後用這場勝負像後轉移即可,
BZOJ 3029 守衛者的挑戰【概率DP】
f
[
i
]
1009E Intercity Travelling 【數學期望】
題目:戳這裡
題意:從0走到n,難度分別為a1~an,可以在任何地方休息,每次休息難度將重置為a1開始。求總難度的數學期望。
解題思路:
跟這題很像,利用期望的可加性,我們分析每個位置的狀態,不管怎麼休息位置1的難度永遠是a1,因此其期望為a1*2^(n-1),其他點出現a1的話,說明上一個點絕對休息過
【網路協議】專題總結以及網路協議高頻面試題彙總(8篇)
這是一份超詳細的HTTP協議攻略,內容大綱如下:
內容如下(點選即可跳轉):
一篇文章帶你詳解 HTTP 協議(上)
一篇文章帶你詳解 HTTP 協議之報文首部及欄位詳解(中)
一篇文章帶你詳解 HTTP 協議(下)
這是一份超詳細的TCP/IP協議
Bag of mice【概率DP】
概率DP與期望DP不同,這個是正序的,接下來上一下我的思路,先上題:
Alice和Bob正在玩一個遊戲:
一個袋子裡一開始裝著w個白球和b個黑球。Alice和Bob輪流隨機抽出一個球(Alice先手)。如果抽出的球是白色的,則抽出這個球的人獲勝。每當一個球被Bob取出後,
【codeforces 148DBag of mice】【概率dp】【記憶化】
【連結】
【題意】
原來袋子裡有w只白鼠和b只黑鼠 ,龍和王妃輪流從袋子裡抓老鼠。
誰先抓到白色老鼠誰就贏。
王妃每次抓一隻老鼠,龍每次抓完一隻老鼠之後會有一隻老鼠跑出來。
每次抓老鼠和跑出來的老鼠都是隨機的。
如果兩個人都沒有抓到白色老鼠則龍贏。王妃先抓。
【程式6】 題目:輸入兩個正整數m和n,求其最大公約數和最小公倍數。
在迴圈中,只要除數不等於0,用較大數除以較小的數,將小的一個數作為下一輪迴圈的大數,取得的餘數作為下一輪迴圈的較小的數,如此迴圈直到較小的數的值為0,返回較大的數,此數即為最大公約數,最小公倍數為兩數之積除以最大公約數。
import java.util.Scanner;