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,也就考虑了所有情况了

posted @ 2025-04-23 08:01  LUHCUH  阅读(20)  评论(0)    收藏  举报