CF1917E 解题报告
CF1917E 解题报告
简要题意
给出一个大小为 \(n*n (n \bmod 2 = 0)\) 的矩阵,区间初始是由全 \(0\) 构成。请往其中填充 \(k\) 个 \(1\),使得每行每列的 \(\text{XOR}\) 值相等,或报告无解。
赛时分析
首先易证当 \(k\) 为奇数时,一定不存在可行解。因为每行的 \(\text{XOR}\) 值相同,所有每行的 \(1\) 的个数相同,因此 \(k\) 一定为偶数。
然后我们想到当 \(k\) 是 \(4\) 的倍数时,肯定有解,因为我们可以不停地用 \(2 \times 2\) 的全 \(1\) 矩阵填满它。
但是当 \(k\) 满足 $k \equiv 2 \pmod 4 $ 时,是否存在解,不知道。
正解
考虑极限情况,如果当 \(k=2\) 或 \(k=n^2-2\) 时,当且仅当 \(n=2\) 时有解。
然后是最重要的部分:除了上面这两种情况,其他满足 $k \equiv 2 \pmod 4 $ 的 \(k\) 都可以通过先放 \((1,1)\),\((1,2)\),\((2,1)\), \((2,3)\),\((3,3)\),\((3,2)\),然后再用剩下 \((k-6)\) 个 \(1\) 去按之前方法填充矩阵。
特别地,如果 \(k=n^2-6\),我们可以再在上述方案的基础上,再填充 \((2,2)\),\((2,4)\),\((4,2)\),\((4,4)\) 来满足条件。