其他分享
首页 > 其他分享> > 【考试总结】2022-05-24

【考试总结】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