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)
考慮每種異或和的方案數。
則
其中 \(x\) 作異或卷積,\(y\) 作迴圈卷積。
考慮 FWT
,記 \(x\oplus y=\operatorname{popcnt}(x\and y)\bmod 2\)
那麼 \(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)\)。