题解:CF494E Sharti
题意等价于在一张 \(n\times n\) 的棋盘上选取白色格子为右下角、边长不超过 \(k\) 的正方形翻转其内部颜色,无法操作者判负。把每个白格看作一个独立的 Nim 堆,其 SG 值只与坐标及 \(k\) 有关。经典结论:\(g(x,y)=\min(\operatorname{lowbit}(x),\operatorname{lowbit}(y),\operatorname{highbit}(k))\)。由于所有 SG 值都是二的幂,总异或只受各幂次出现次数奇偶控制。
棋盘初态由最多 \(5\times10^{4}\) 个矩形按奇偶覆盖决定。若直接逐格计数显然不行,需要把“按行列能否整除 \(2^{p}\)”的奇偶拆分为 \(A_p\),再由 \(A_p\oplus A_{p+1}\) 还原全局异或的第 \(p\) 位。扫描线沿 \(x\) 轴从左至右处理所有矩形的左右边事件;纵向用动态开点线段树维护当前被白色覆盖的 \(y\) 区间,并在每个节点存三样数据:区间覆盖计数 \(\text{cov}\),当整段全白时的掩码 \(\text{all}\),以及当前实际掩码 \(\text{msk}\)。\(\text{all}\) 可预处理:对区间 \([L,R)\) 计算每个 \(p\) 下满足 \(2^{p}\mid y\) 的点数奇偶,拼成一个 \(32\) 位掩码。区间修改打懒标记时只需判断覆盖计数是否转为非零来决定 \(\text{msk}\) 取 \(\text{all}\) 还是子节点按位异或。
相邻两条垂直扫描线之间 \(x\) 坐标区间 \([x_i,x_{i+1})\) 的贡献取决于该区间内能被 \(2^{p}\) 整除的 \(x\) 个数奇偶,公式是 \(((x_{i+1}-1)\div2^{p}-(x_i-1)\div2^{p})\bmod2\)。把它与线段树根节点给出的 \(\text{msk}\) 做按位与,再累积到 \(A_p\)。扫描完所有事件即可获得所有 \(A_p\),进一步求得最终异或。异或非零则先手 Hamed 胜,否则 Malek 胜。
时间复杂度 \(O(m\log k\log n)\)。

浙公网安备 33010602011771号