对于空地 ,令 表示其周围至多 个格子中的住宅数量。
如果在空地 上种一棵树,这棵树会分别计入每个相邻住宅周围的树木数量。因此,总和恰好增加 。不同空地的贡献彼此独立。
于是问题转化为:从若干个介于 到 的 中选择一些,使它们的和至少为 ,同时使选择的数量最少。对于固定的选择数量,要使总和最大,应优先选择最大的 。因此,按 的顺序尽可能选择即可。
如果所有空地的 之和小于 ,则无法满足条件,应输出 -1。如果 ,则不需要种任何树,答案为 。
每个空地的 都可以通过检查周围至多 个格子求出。由于 只可能是 ,只需统计每个值出现的次数,无需排序。每个测试用例的时间复杂度为 ,总时间复杂度为 。存储网格需要 的内存。
Solution written by GPT5.6