首先,我们需要理解题目的要求,即我们需要在不多于k个空闲格子上放置方块,以使得稳固方块的数量最多。
解决这个问题的关键在于如何选择放置方块的空闲格子。我们可以观察到,对于某一列连续出现的空闲格子,记其数量为cnt,我们最多可以得到cnt−1个稳固的方块。
具体实现时,我们可以使用一个优先队列来存储每一列连续出现的空闲格子的数量。优先队列的顶部是数量最多的连续空闲段。然后,我们每次从优先队列中取出一段格子进行放置,直到我们已经放置了k个方块。
通过这种方式,我们可以保证每次放置都能得到最多的稳固方块,从而得到最终的答案。
在一个 n 行 m 列的网格中,每个格子要么是空闲的(用 o 表示),要么是被占用的(用 * 表示)。你计划在空闲格子上放置方块,但最多只能放置 k 个。放置完成后,如果在某一列中,上下相邻的两个格子都放置了方块,则位于上面的那个方块被称为 稳固的。
你的目标是最大化稳固方块的数量。请计算最多能得到多少个稳固方块。
约束
By signing up a CodeFun2000 universal account, you can submit code and join discussions in all online judging services provided by us.