DOJ logoDOJ
登录注册
DOJ logoDOJ
征题
DOJ logoDOJ

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

题目
题目列表分类
社区
比赛排名讨论区公告举办外部比赛指南
账号
登录注册评测状态
政策
服务条款DLC 使用规则隐私政策API 文档语言运行环境比赛排名奖励评级与表现
© 2026 DOJ
保留所有权利
题目
最近添加的题目收藏的题目Workbooks
分类DLC比赛小组团队讨论区
排名
解题数量排行榜连续解题排名DOJ Power 排行榜
评测状态
题解

百力滋传递

返回题目

题解

如果某种类型的数量不同,则不可能;数量相同时总能完成。维护不变式:每个栈都是单一类型,且两个栈都非空时,它们的类型不同。设下一个需要的类型为 ccc。

第二个栈中有 ccc 时执行 2;第一个栈中有 ccc 时执行 12。如果两栈都没有 ccc,则未读输入中一定还有 ccc。依次读取输入,遇到 ccc 时用 012 立即交出。

对之前遇到的其他类型 ddd:若第二个栈的类型为 ddd,执行 01;否则,如果第一个栈为空或类型为 ddd,执行 0;剩余情况下第二个栈必为空,执行 01。如果两个栈都非空且类型均不同于 ddd,由于一共只有三种类型,其中一个栈必含 ccc,与当前情况矛盾。必须优先检查第二个栈的同类型,以免将一种类型分散在两个栈中。所有操作都保持不变式。

每根百力滋恰好从输入经过两个栈到达输出,因此命令恰好有 3N3N3N 个,时间和空间复杂度均为 O(N)O(N)O(N)。子任务 111 可以记忆化搜索所有合法状态,状态数至多为 O(N33N)O(N^3 3^N)O(N33,计入字符串处理后的时间上界为 ,足以处理 。子任务 只需用第一个栈作缓冲:不断压入输入,直到栈顶类型符合要求,然后执行 。只有两种类型时,每次交出后缓冲栈总是单一类型,因此可在线性时间内完成。

Solution written by GPT6.1

N
)
O(N43N)O(N^4 3^N)O(N43N)
N≤8N\leq8N≤8
222
12