【考试总结】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 DP\) 写成矩阵的形式,套用倍增即可得到一个复杂度 \(\Theta(nl^3\log n+ql^2\log n)\) 的做法
其实第一步的倍增中不必要每个元素都处理 \(\rm 1,2,\dots \log_2dep\) 的所有转移矩阵,大可使用树状数组的思想每次消掉深度差的 \(\rm lowbit\) 来进行上跳
那么让 \(\sum\log_2\rm lowbit(dep)\) 尽量小成了现在的目的,可以在根上方添加一系列虚点,即只改变深度,不含有任何信息
设最终的添加的点数为 \(L\),初始 \(L=0\),从小向大遍历每个二进制位 \(i\),如果未确定 \(\rm lowbit\) 的元素中深度加 \(L\) 的第 \(i\) 位的数量超过第 \(i\) 位 \(1\) 的元素就让 \(L\leftarrow L+2^{i-1}\) 来让更多的元素 \(\rm lowbit\) 尽量小即可
经过上述修改之后,使用 \(\Theta(n\sum_{i}{2^i})=\Theta(n)\) 发现预处理复杂度中的 \(\log\) 消失了
标签:24,log,05,lowbit,sum,2022,Theta,rm,SG 来源: https://www.cnblogs.com/yspm/p/TestReview2022-05-24.html