CF1720E Misha and Paintings 做题记录

给你一个 n×nn\times n 的矩阵 aa 和一个正整数 kk,你可以对 aa 进行任意次操作(可以不操作),操作的具体步骤如下:

  • 选择矩阵 aa 的一个正方形子矩阵;
  • 选择一个正整数数 xx,其中 1xn21\leq x\leq n^2
  • 将子矩阵内的所有元素修改为 xx

你需要求出使矩阵 aa 恰好包含 kk 个不同元素所需的最小操作次数。

1n500,1kn21\le n\le 500,1\le k\le n^2

设操作前有 cntcnt 个不同元素,那么若 kcntk\ge cnt 则答案一定是 kcntk-cnt,因为一次操作最多增加一个不同元素。

考虑 k<cntk<cnt 的情况,可以证明最多只需要两次操作:

  • 考虑选择一个以 (1,1)(1,1) 为左上角的最大的正方形使得它全部替换成 a1,1a_{1,1}aa 中不同元素个数 k\ge k 且最小;

  • 接下来这样选择第二个正方形:

    因为这个正方形可以选择与第一个的 xx 相同或不同,所以总有一个满足操作完之后 aa 中恰好有 kk 个不同元素;

那么只用判断 11 次和 00 次是否可以即可,做法很显然。