8 29 我們自己的世界

2022-04-30 08:00:10 字數 1731 閱讀 7723

給乙個大小為\(n\)的陣列\(a\),每次對陣列進行如下的變換:

這裡的\(\oplus\)運算指異或

我們會發現每次陣列\(a\)的長度會減一,當陣列\(a\)的長度減至一時,結束變換

如果我們把每次變換後的\(a\)陣列的第一項儲存下來,記為\(a_0[1],a_1[1]...a_[1]\)

求\[\oplus \sum_^a_i[1] \times (i+1)

\]這裡的\(\oplus \sum\)指的是異或和運算

\(n \leq 8\times 10^6\)

這題解法巨巧妙

畫出乙個類似菱形網格圖的結構,觀察一下每次變換後的第一項是被哪些元素異或幾次組成的

把元素編號由\(1,2..n\)改為\(0,1...n-1\)

我們能觀察到如下的規律

變換\(/\)元素

\(a_0\)

$a_1 $

$a_2 $

\(...\)

\(a_\)

\(1\)

\(1\)

\(0\)

\(0\)

\(0\)

\(0\)

\(2\)

\(1\)

\(2\)

\(1\)

\(0\)

\(0\)

$... $

\(n\)

\(c_n^0\)

\(c_n^1\)

\(c_n^2\)

\(...\)

\(c_n^\)

這不就是個楊輝三角嗎?

我們知道,異或次數為奇數的有貢獻,異或次數為偶數的無貢獻

那麼現在我們需要快速求出組合數的奇偶性

根據盧卡斯定理,我們知道

\[c_n^m \pmod p = c_^ \times c_^

\]現在我們需要判斷其奇偶性,就需要模乙個\(2\)

\[c_n^m \pmod 2 = c_^ \times c_^

\]我們可以把\(\%2\)與\(/2\)視作二進位制位下的操作,即

\[c_n^m\pmod 2=c_^\times c_^

\]研究一下\(c_^\)我們發現,只有\(n\)為偶數\(m\)為奇數時這個數為\(0\),其餘均為\(1\)

也就是\(n\)的某一位為\(0\)而\(m\)的某一位為\(1\)時,這個數為\(0\)

所以我們可以發現

\[c_n^m \pmod 2 = 1 \ \ (m \& n=m)\\

c_n^m \pmod 2 = 0 \ \ (otherwise)

\]所以當\(m\)為\(n\)的子集時,元素\(a_m\)會對第\(n\)次變換的第乙個元素有貢獻

設\[b_n=\oplus \sum_a_d

\]最後的答案即為

\[ans=\oplus \sum_^ (i+1)\times b_i

\]於是現在的問題轉化為了求\(b\)陣列,也就是對於陣列\(a\)每個位置上求一遍子集和

這個可以用\(fwt\),但更方便的是採用\(fmt\),**比較短

本質上就是做乙個\(n\)維的字首和,一維一維的累加答案

#include using namespace std;

const int n = 8e6 + 10;

int n;

long long a, b, c, d;

long long a[n];

int main()

我們身處的謊言世界

此刻,你本可以在任何地方做任何事,但你卻獨自坐在螢幕前。究竟是什麼在阻礙我們做想做的事,到想去的地方?每天我們都在同樣的房間醒來,遵循同樣的生活軌跡,過著和昨天同樣的生活。曾幾何時每一天都是一場新的冒險,然而某種改變發生了,曾經的一天沒有時間的束縛,如今的一天卻被各種計畫佔據。難道這就是長大後的生活...

我們並非自己的主人

我們的大腦決定了行動,而我們的心智僅僅是緊隨其後的影子。班傑明.裡貝特,神經心理學教授,在1983年發表的 令科學界與哲學界譁然。假設班傑明所說的都是真的,那麼我們會悲哀的發現 我們僅僅是大腦生理活動的傀儡。大腦完成的工作僅僅是機械的生理反應的產物,也就是說我們的所有行動只取決於我們大腦的構成與大腦...

不讓世界改變自己

不讓世界改變自己 在一家超市裡,父親 母親 年輕的兒子一家三口人在完成了家庭購物計畫之後,url 左側排名 url 父親讓兒子將使用過的購物手推車送回到原來的地方。爸爸,你看到沒有,手推車扔得到處都是,沒有乙個人送還的,這也是超市專門僱人負責收集歸攏手推車的原因。父親耐心地教導著兒子 那麼,兒子,你...