【考試總結】2022-05-24
奇怪的博弈
首先黑色白色棋子是獨立的,所以局面 \(\rm SG=SG_{B}\oplus SG_{W}\),而 \(\rm SG_W\) 就是所有白色石子堆的大小異或和
由於每次只能取走數目最小的一堆中的石子,那麼相對大小關係不會發生改變,也就是說沒取完之前都只能取這堆石子
此時可以通過簡單推導得到表示式,即 \(SG_{B}=\min pile-[(\min=\max)\oplus (cnt_{min}\equiv 1\mod2)]\)
列舉最小的堆中的石子個數,此時問題本質上是求一個多重集合的子集異或和為 \(t\) 的子集數量
使用線性基判定是不是能表示出來,如果可以那麼對於不線上性基中的元素,每種 “是否在子集” 的分配方案都可以對應一個線性基中的分配方案
倒序列舉複雜度即 \(\Theta(n\log W)\)
賽時的暴力 \(\rm DP\) 寫錯模數是怎麼回事呢?
奇怪的拆分
設 \(f_n\) 表示本題中定義的集合形成的二叉樹數量,考慮列舉左右兒子大小並忽略其位置可以得到下述方程
\[f_{n}=1+\frac12\sum_{i=1}^{n-1}\binom{n}{i}f_if_{n-i} \]使用 \(\rm EGF\) 來補項化簡可以得到:
\[2F=\frac 12F^2+e^x+\frac 12 \]解方程過後使用多項式開根即可
奇怪的植物
使用 \(\rm AC\) 自動機維護所有文字串,由於 \(\sum |t_i|\le 40\)
其實第一步的倍增中不必要每個元素都處理 \(\rm 1,2,\dots \log_2dep\) 的所有轉移矩陣,大可使用樹狀陣列的思想每次消掉深度差的 \(\rm lowbit\) 來進行上跳
那麼讓 \(\sum\log_2\rm lowbit(dep)\) 儘量小成了現在的目的,可以在根上方新增一系列虛點,即只改變深度,不含有任何資訊
設最終的新增的點數為 \(L\),初始 \(L=0\),從小向大遍歷每個二進位制位 \(i\),如果未確定 \(\rm lowbit\)
經過上述修改之後,使用 \(\Theta(n\sum_{i}{2^i})=\Theta(n)\) 發現預處理複雜度中的 \(\log\) 消失了