BZOJ3811 瑪里苟斯(線性基 概率期望)

2022-05-20 18:12:07 字數 1151 閱讀 7212

k=1的話非常好做,每個有1的位都有一半可能性提供貢獻。由組合數的一些性質非常容易證明。

k=2的話,平方的式子展開可以發現要計算的是每一對位提供的貢獻,於是需要計算每一對位被同時選中的概率。找出所有存在的相互繫結的位,這些位被同時選擇的概率為0.5,而不被繫結的則為0.25。

對於k>=3,其實用與k=1,2相同的方法大力討論也可以做。考慮更優美的做法。有乙個性質:集合內數相互異或不影響答案。證明比(bing)較(bu)顯(hui)然(xie)。於是構造出線性基。可以發現線性基里的元素很少,暴搜一發即可。

卡精度,不會證地有答案一定是整數或.5,全程整數各種亂搞即可。

#include#include

#include

#include

#include

#include

using

namespace

std;

#define n 100010

#define ll unsigned long longll read()

while (c>='

0'&&c<='

9') x=(x<<1)+(x<<3)+(c^48),c=getchar();

return x*f;

}int n,m,cnt=0

;ll a[n],

base[64],b[64

];bool flag[64],f[64][64

];ll ans,tot;

void

getbase()

}for (int j=63;~j;j--)

if (base[j]) b[++cnt]=base

[j];

}void

solve1()

void

solve2()

cout

;}void solve3(int

k,ll s)

else solve3(k+1,s),solve3(k+1,s^b[k]);

}int

main()

if (m==1

) solve1();

if (m==2

) solve2();

if (m>=3

)

return0;

}

BZOJ 3811 瑪里苟斯(線性基)

description 魔法之龍瑪里苟斯最近在為加基森拍賣師的削弱而感到傷心,於是他想了一道數學題。s 是乙個可重集合,s 等概率隨機取 s 的乙個子集a 計算出 a 中所有元素異或 x,求xk 的期望。input 第一行兩個正整數n,k 以下n 行每行乙個整數,表示ai 1 n 100000,1 ...

bzoj3811 瑪里苟斯 線性基

description 魔法之龍瑪里苟斯最近在為加基森拍賣師的削弱而感到傷心,於是他想了一道數學題。s 是乙個可重集合,s 等概率隨機取 s 的乙個子集 a 計算出 a 中所有元素異或 x,求 x k 的期望。input 第一行兩個正整數 n,k。以下 n 行每行乙個整數,表示 ai。output ...

BZOJ3811瑪里苟斯

從乙個序列裡面選擇一些數異或起來,求所有異或方案的答案的 k 次方的期望值 n le 100000,1 le k le 5 對於 k 1 的情況,對於每一位分開考慮 如果至少有乙個數的當前位是 1 的,那麼有一半的可能性為 0 也就是如果乙個異或方案為 0 那麼選擇其補就能能得到為 1 的結果 使用...