9月記錄

蒟蒻orz發表於2024-09-03

282.CF2001

D

貪心做不明白了。

按照字典序貪心。

比如說奇數位,讓顏色最大。

有一種說法是選擇一個最大的顏色填入,使得填入後剩餘顏色都可填入。

形式些表述,我們已經構造了 \(b_1,b_2,\cdots,b_j\),其中 \(b_j=a_i\),設 \(l_x\) 是顏色 \(x\) 出現在 \(a[i+1,n]\) 的最後一個位置,那麼我們可以選擇 \(a[i + 1,\min_{1\le x\le n}(l_x)]\) 中的任何位置,找到裡面的最小/最大顏色,更新即可,可以用線段樹。

E1

\(g_{i,j},h_{i,j}\) 分別表示深度為 \(i\) 的大根堆,使用了 \(j\) 次操作,可以進行一次 pop 的數量,以及深度為 \(i\) 的大根堆,使用了 \(j\) 次操作,的數量。

轉移簡單,可以用字首和最佳化。

E2

可以使用兩次 pop 了,需要記錄每個點最大兒子的這個資訊。

\(f_{i,j,k}\) 表示深度為 \(i\) 的大根堆,使用 \(j\) 次操作,最大兒子為 \(k\),可以進行兩次 pop 的方案數。

\(g_{i,j,k}\) 表示深度為 \(i\) 的大根堆,使用 \(j\) 次操作,最大兒子為 \(k\),可以進行一次 pop 的方案數。

\(h_{i,j}\) 同理。

轉移考慮 \(f\),的兩次 pop,可以兩次都在同一個子樹,也可以兩次在不同子樹,討論一下即可。

字首和最佳化,\(\mathcal O(nk^2)\)

283.[ABC367G] Sum of (XOR^K or 0)

考慮每種異或和的方案數。

\[ans_i=[y^0x^i]\prod_{i=1}^{n}(1+yx^{a_i}) \]

其中 \(x\) 作異或卷積,\(y\) 作迴圈卷積。

考慮 FWT,記 \(x\oplus y=\operatorname{popcnt}(x\and y)\bmod 2\)

\[[x^w]\operatorname{FWT}(A)=\sum_{i\oplus w=0}A_i-\sum_{i\oplus w=1}A_i \]

那麼 \(A'\) 中的每個位置只能是 \(1+y\)\(1-y\),即 \((1+y)^a(1-y)^b\)

其中我們知道 \(a+b=n\),考慮求出 \(a-b\),得到 \(a,b\)

然後我們只需要知道 \(a,b\) 下式子 \(y^0\) 的係數,因為 IFWT 做的是線性變換,所以次方不會改變。

根據定義,有 \(A=\sum [A_i\oplus w=0],b=\sum[A_i\oplus w =1]\)

那麼將 \(A_i\) 扔到一個桶中,做 FWT 就能得到每一位上 \(a-b\) 的值了。

時間複雜度 \(\mathcal O(nm+mV+V\log V)\)