HZOJ 簡單的期望

2022-03-27 16:09:28 字數 929 閱讀 1615

性質:乙個數分解質因數後2的次數=二進位制下末尾連續0的個數。

乘2比較好考慮,比較噁心的是+1。乙個$k*2^0$的數+1後可能會出現很多情況。但是k這個數表示不出來。

但是加的操作最多有200次,也就是說最多影響二進位制下的後8位。根據上述性質,我們把後8為作為狀態,統計概率。

但是只有後8位狀態的的話還是不可做,再加上第9位狀態以及與第九位相同的連續長度來考慮進製。

即f[i][j][s][k]表示i次操作後,後8位為s,第九位為k,有連續j位的概率。

轉移少麻煩但還是比較好想的。本題難度在於狀態定義。

#include#include#include#include#define int ll

#define ll long long

using namespace std;

int x,n,p;

double gl1,gl2;

double f[210][255][1<<10][2];

int cnt[1<<10];

signed main()

/* for(int i=0;ifor(int j=1;j<=10;j++)

for(int s=0;s<(1<<8);s++)

cout

for(int j=0;j<=8&&(((1

for(int i=1;i<(1<<8);i++)

for(int j=1;j<=250;j++)

ans+=(f[n][j][i][0]+f[n][j][i][1])*cnt[i];

for(int j=1;j<=250;j++)ans+=f[n][j][0][0]*(j+8)+f[n][j][0][1]*8;

printf("%0.10lf\n",ans);

}

HZOJ 老司機的狂歡

比較神仙的一道題。第一問還比較簡單一點 t是否可行是單調的,考慮二分。考慮對於兩個人i,j合法的條件,設x i 那麼把x離散作為陣列下標,t時間後的位置作為值,合法的最多人數為最長上公升子串行。將t時間後的位置再次離散,樹狀陣列維護即可。注意此序列的下標為離散後的x,並不是輸入的 老司機 的id,在...

簡單概率與期望

zyf大佬課件的傳送門 p a 表示a事件發生的概率,則p a b 表示的是a或b發生的概率,p ab 表示的是a和b都發生的概率。概率分為 古典概型 和 幾何概型 其中古典概型是指樣本空間有限,而幾何概型是指樣本空間無限,如乙個人隨機在1點到2點上學。實際上我感覺幾何概型和連續性概率沒多大區別,可...

簡單的期望 狀壓dp

dp定義真的神,直接的想法是 f x maxn 為第 x 個操作,狀態 maxn maxn 1 200,好像沒有暴力分高 實際上我們可以這樣定義 f x maxn len 0 1 表示後八位 maxn 第九位0 1,第九位之後連續長度為 j 概率 為什麼這樣定義 實際上質因數分解後2的次數就是後面0...