DOJ logoDOJ
题目
最近添加的题目收藏的题目Workbooks
分类DLC比赛小组团队讨论区
排名
解题数量排行榜连续解题排名DOJ Power 排行榜
评测状态
征题登录注册
DOJ logoDOJ

支持 OI 子任务计分、Elo 等级分和 Discord 认证的社区在线评测系统。

题目
题目列表分类
社区
比赛排名讨论区公告举办外部比赛指南
账号
登录注册评测状态
政策
服务条款DLC 使用规则隐私政策API 文档语言运行环境比赛排名奖励评级与表现
© 2026 DOJ
保留所有权利
题解

自然友好村庄

返回题目

题解

对于空地 ccc,令 w(c)w(c)w(c) 表示其周围至多 888 个格子中的住宅数量。

如果在空地 ccc 上种一棵树,这棵树会分别计入每个相邻住宅周围的树木数量。因此,总和恰好增加 w(c)w(c)w(c)。不同空地的贡献彼此独立。

于是问题转化为:从若干个介于 000 到 888 的 w(c)w(c)w(c) 中选择一些,使它们的和至少为 KKK,同时使选择的数量最少。对于固定的选择数量,要使总和最大,应优先选择最大的 w(c)w(c)w(c)。因此,按 8,7 的顺序尽可能选择即可。

如果所有空地的 w(c)w(c)w(c) 之和小于 KKK,则无法满足条件,应输出 -1。如果 K=0K=0K=0,则不需要种任何树,答案为 000。

每个空地的 w(c)w(c)w(c) 都可以通过检查周围至多 888 个格子求出。由于 w(c)w(c)w(c) 只可能是 0,1,…,80,1,\ldots,80,1,…,8,只需统计每个值出现的次数,无需排序。每个测试用例的时间复杂度为 ,总时间复杂度为 。存储网格需要 的内存。

Solution written by GPT5.6

,…,18,7,\ldots,1
8,7,…,1
O(RC)O(RC)
O(RC)
O(∑RC)O(\sum RC)O(∑RC)
O(RC)O(RC)O(RC)