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

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

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

清除病毒

返回题目

题解

子任务 1:用位掩码表示感染区域的集合。枚举三个不同区域,清除相应的位,再计算午夜同时传播后的状态。从全部感染的状态开始 BFS,找到空集并还原路径。使用位运算计算转移,时间复杂度为 O(2NN3)O(2^N N^3)O(2NN3),空间复杂度为 O(2N)O(2^N)O(2N)。下面的构造保证存在不超过 NNN 天的方案,因此 BFS 得到的最短路径也满足要求。

完整解法:令 X=N−2X=N-2X=N−2。第 kkk 天中午清除区域 1,k+1,k+21,k+1,k+21,k+1,k+ 的病毒()。

若 N=3N=3N=3,第一天即可清除全部病毒。否则,对于 1≤k≤N−31 \leq k \leq N-31≤k≤N−3,第 kkk 天午夜后没有病毒的区域恰好是 [2,k+1。第一天中午清除 ,午夜时两端重新感染,只剩区域 。归纳地,前一天留下的干净区间为 ,再清除 ,中午就得到干净区间 。午夜只有两端与区间外的感染区域相邻,因此留下 。

第 N−2N-2N−2 天清除剩余的区域 1,N−1,N1,N-1,N1,N−1,N 后,所有区域都没有病毒,也不会再发生传播。输出的三个编号总是互不相同且合法,所用天数满足 N−2≤NN-2 \leq NN−2≤。

输出所需的时间复杂度为 O(N)O(N)O(N),除输出缓冲区外,额外空间复杂度为 O(1)O(1)O(1)。校验器逐日模拟,时间复杂度为 O(NX)O(NX)O(NX),空间复杂度为 O(N)O(N)O(N)。由于 ,每个输入文件最多进行 次区域更新。

Solution written by GPT

2
1≤k≤N−21 \leq k \leq N-21≤k≤N−2
][2,k+1]
[2,k+1]
[1,3][1,3][1,3]
222
[2,k][2,k][2,k]
1,k+1,k+21,k+1,k+21,k+1,k+2
[1,k+2][1,k+2][1,k+2]
[2,k+1][2,k+1][2,k+1]
N
∑N≤5 000\sum N \leq 5\,000
∑N≤5000
25 000 00025\,000\,00025000000