给你一个 的矩阵 和一个正整数 ,你可以对 进行任意次操作(可以不操作),操作的具体步骤如下:
- 选择矩阵 的一个正方形子矩阵;
- 选择一个正整数数 ,其中 ;
- 将子矩阵内的所有元素修改为 。
你需要求出使矩阵 恰好包含 个不同元素所需的最小操作次数。
。
设操作前有 个不同元素,那么若 则答案一定是 ,因为一次操作最多增加一个不同元素。
考虑 的情况,可以证明最多只需要两次操作:
-
考虑选择一个以 为左上角的最大的正方形使得它全部替换成 后 中不同元素个数 且最小;
-
接下来这样选择第二个正方形:
因为这个正方形可以选择与第一个的 相同或不同,所以总有一个满足操作完之后 中恰好有 个不同元素;
那么只用判断 次和 次是否可以即可,做法很显然。