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

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

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

Erasing Dadas Strings

返回题目

题解

아직 남은 칸이 있는 가장 왼쪽 열을 고르고, 그 열에서 가장 위에 남은 칸 (r,c)(r,c)(r,c)를 보자. 이 칸은 어떤 다다스 문자열의 첫 글자여야 하므로 반드시 d이다.

(r+1,c)(r+1,c)(r+1,c)가 아직 남아 있고 a라면 그 칸은 왼쪽이나 위쪽에서 시작한 다른 문자열에 포함될 수 없다. 따라서 현재 문자열은 아래쪽으로 진행해야 한다. 그렇지 않으면 오른쪽으로 진행해야 한다. 정한 방향으로 d, a가 번갈아 나오다가 s로 끝나는 가장 앞의 문자열을 지운다. 이 과정에서 규칙에 맞지 않는 칸이나 이미 지운 칸을 만나면 불가능하다.

열 우선 순서로 모든 칸을 처리한 뒤 전부 지워졌으면 기록한 연산들이 답이다. 각 칸은 한 번만 확인되므로 시간 복잡도는 O(NM)O(NM)O(NM)이다.