牛客練習賽20 A和B

2021-08-20 19:07:48 字數 1066 閱讀 5125

在一次課間休息的時候,音無結弦看到立華奏乙個人坐在座位上寫作業,於是動了請她吃麻婆豆腐的念頭。他迅速移動到她後面的座位,尋思著該怎麼開口邀請,他摸了摸口袋,拍了拍腦袋,有了!

「奏~聽說食堂裡有種傳聞中因為辣過頭所以誰都不會點的麻婆豆腐,但是卻驚人地好吃啊,這樣,我們來做個題吧!如果你做出來了我就天天請你吃麻婆豆腐╰( ̄▽ ̄)╮」

奏的筆停下了,她轉過頭來,還帶了一張草稿紙,做好了做題的準備。音無懵了一下,心中暗暗竊喜,「麻婆豆腐果然是她的最愛啊!」

「咳咳...請聽題!我手上有n枚硬幣,第i枚正面朝上的概率是p

i。我現在每個硬幣各拋一次,正面朝上看做1,背面朝上看做0,把所有硬幣得到的數異或起來決定最後得到的數。問:有多少個子集合使得0和1的概率相等?」

不管音無給了怎樣的數,奏都是一分鐘不到就算出來了!不愧是前學生會長啊~

於是他們就去食堂吃麻婆豆腐了,現在,你也來算一下吧。

輸入的第一行包含乙個整數t,表示測試組數。

每個測試用例前面都有乙個空白行。

每個測試用例由兩行組成。

第一行包含硬幣數量n。

第二行包含n個數表示:概率p1,...,pn。每個pi都給出6個小數字。

對於每個測試用例輸出乙個數:使得0和1的概率相等的子集合數量。

首先要知道乙個結論,對於若干個0和1的異或的結果取決於1的個數,1的個數為奇數,結果為1.為偶數結果為0.。

知道這個結論後,我們只要保證我們選的概率子集中有乙個概率是0.5即可滿足要求。因為不管前面的正反結果如何我們最後丟擲的那個硬幣正面的概率總是等於反面的概率0.5。

所以取若干個0.5,其他的隨便取即可。

#include #include #include #include #include using namespace std;

typedef long long ll;

int main()

for(ll i=2;i<=n;i++) }

int main()

if(n==0)

else if(m==0)

else

}} cout<

牛客練習賽4 B

思維題,把 i2 j2 ai2 aj2 絕對值符號去掉後,我們設i2 j2 ai2 aj2 j2 i2 aj2 ai2 j2 aj2 i2 ai2 或者 i2 j2 ai2 aj2 j2 i2 aj2 ai2 ai2 i2 aj2 j2 原式化簡後只有這兩種形式,那麼我們可以設定兩個陣列a n b ...

牛客練習賽69 B

題意 給定n nn個數,乙個x xx表示可以劃分成最多x xx個串,乙個y yy表示在乙個串中最多選擇y yy個數。最後求 i 1x j 1yv al i j sum x sum yval i,j i 1x j 1 y va l i,j v al i,j val i,j val i,j 為 將n n...

《牛客練習賽28 B》

這題主要就是多了乙個平方和的操作。我們維護平方和的值的時候。需要注意在下放的時候,要先把乘法之後的sum1算出來,這對算sum1最終的值沒有影響。但是對sum2的值有影響。因為我們在計算中就在更新adtag的值,所以這個adtag它的sum1應該最終化。includeusing namespace ...