2081C - Quaternary Matrix
CF2081C - Quaternary Matrix
题解
-
设 \(R_i\),\(C_i\) 分别表示,每行,每列的异或和
-
一种构造
- 取 \(R_1\) \(C_1\) 为关键行列。
- 用 \(R_1\) 还原所有 \(C_i(i\not= 1)\)
- 用 \(C_1\) 还原所有 \(R_i(i\not=1)\)
- 最后还原 \(R_1,C_1\)
-
这显然不是最优方案,但 至少 不管剩下一个怎样的烂摊子都可以 \((\sum[R_i\not=0]+[C_i\not=0])-1\) 解决一切
-
考虑一些聪明的取法
- 至少需要一行,一列
- 所有行列的异或和要为 \(0\)
-
于是我们有下列三种聪明的方案
-
情况1 \((R_i,C_i)\) 我们仅仅需要花费 \(1\) 的代价,解决了烂摊子需要 \(2\) 代价的事情0
-
情况2 \((R_1,C_2,C_3)\) 这里只需要满足,三个数分别取道 \(1,2,3\) 因为异或和为 \(0\) 且保证有行有列即可,用 \(2\) 的代价替代了原本 \(3\) 的代价
-
情况3 \((R_i,R_i,C_j,C_j)\) ,(其实 \((R_i,R_j,C_i,C_j)\) 也行,但是这样不如第一中情况呢) 用,3 的代价替代的原本为 4 的代价。
-
贡献都是 -1 尝试从简单的 \(R_i,C_i\) 突破问题
-
我们大胆猜想,先贪心所有情况1,是否正确呢?
-
若是不对,必然存在两组以上的情况2,情况3 把情况1拆开了,都和情况1的代价相同,而情况1还能多剩下数,枚举一下可能,证明不难。
-
于是 先取完所有情况1。那么剩下的每一个异或和值相同的必然都是是行或者都是列
-
因为一共就三个数所以取法基本固定,我们先尽可能 2,最后情况3
-
可能有问题,打不了撤销一个情况2,也就考虑了所有情况了

浙公网安备 33010602011771号