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

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

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

分发百奇

返回题目

题解

子任务1 设空格数为KKK。枚举全部2K2^K2K种方向分配,标记存在横向盒子的行和存在纵向盒子的列,再检查所有学生。时间复杂度为O(2KNM)O(2^K NM)O(2KNM)。

完整解法 若每一行都有空格,将所有盒子设为横向,每名学生都能从同行的盒子得到百奇。类似地,若每一列都有空格,将所有盒子设为纵向即可。

若两种条件都不满足,就存在没有空格的一行和没有空格的一列。它们交点处的学生无法从任何方向得到百奇,因此无解。这证明了判定及构造的正确性。

包括输入输出在内,时间复杂度为O(NM)O(NM)O(NM),保存网格的空间复杂度为O(NM)O(NM)O(NM)。

Solution written by GPT6.1