爆肝万余字!2026 年洛谷愚人节比赛 O 题 T722404 Escape's Metabox 题解

· · 休闲·娱乐

前言

本题解有详细的机制介绍与引导、探索、思考过程,需要有一定的耐心~

牢记,受限之处,也正有破局之法。强烈推荐先自行探索一段时间,思路卡住了再看题解,这样有助于更好地理解题解内容。

2026 年洛谷愚人节比赛时,本人在观战同学打比赛时,意外发现本题很符合本人的胃口,于是在比赛开始数个小时后单人专攻本题,且大部分独立完成拿到了 98pts,赛后自行分析 Register_int 巨佬的提交记录完成了 100pts(简称:抄学霸作业~),并独自分析出了三个悖论

知识锁类型的题目确实惊艳。在解题过程中逐渐发现、理解机制并运用的过程趣味性十足,加之其难度相当高,个人认为是一道解密神题!

题意

题目链接。很厉害的推盒子问题。跟 Patrick's parabox 相似(建议先看看,有助于理解),但不完全相同,甚至因为测试点形式的 UI不同的盒子机制,使得这道题更为硬核。

机制介绍

不想被剧透请自行跳过。

0 世界观

AC 被困在了嵌套的盒子里面。每种编号的盒子结构相同。你需要操控 AC,让它成功从 1 号盒子到达 50 号盒子——出口。

1 操作

优先级:推动大于进入

移动与推动

跟普通的推盒子问题一样,可以通过 wasd 移动并推动盒子,但是无法拉动盒子。

进入与退出

  1. 如果盒子已经无法推动,且对应方向边缘正中间有空隙,则可以缩小进入,同时视角放大,聚焦在进入后所在的盒子里。盒子也可以缩小被推进盒子;且对于一连串的盒子,最远的合法盒子会被进入。
  2. 如果盒子的边缘在任意位置有开口,且退出点可以正常到达(包括可以推走盒子),则可以放大退出,同时视角缩小,聚焦在退出后所在的盒子里。盒子也可以被放大被推出盒子;且对于一连串的盒子,最远的合法盒子会被推出。
  3. 在退出所在位置的盒子无法推动的情况下,同等大小的两个盒子可以从对应位置穿梭

    2 各种标记信息

    时间信息

    • ?ms:当前所在的盒子编号

      空间信息

    • 0B:进出正常的盒子;
    • 1MB:进入会直接转移到对应编号的 0B 盒子;
    • 999MB:无法推动、无法走入的墙壁

      状态信息

    • AC:做题者操控的主角
    • WA:可直接走向的空地
    • MLE:稳定共用同一个空间普通盒
    • TLE:不稳定,每次进入开辟一层空间直接退出破坏当前空间恢复成初始状态的刷新盒
    • UKE:极其稳定共用同一个空间,且直接进入会将所在盒子空间信息改为 0B(此操作相当于标记最后一次所在的盒子)的末影盒

      解法

      注意事项:

    • 小标题:作者自加。
    • 注释:会以上帝视角补充与解释,有所剧透。
    • 介绍机制:机制在逐渐深入的过程中愈发清晰,且有可能推翻之前的本已发现的机制,即以玩家视角介绍机制。打对钩的为确定全面的机制,否则理解不完全甚至误解
    • 操作示例标记:数字表示主角第一次到达此盒子的这一部分,, 表示主角进入或退出盒子。

      1 陷入

      :::info[注] 此时可以根据题面确定一部分世界观——嵌套的盒子 :::

      结构地图

      1ms

      介绍机制

    • [x] AC:主角
    • [x] WA:空地
    • [x] ?ms:当前所在的盒子编号
    • [x] 999MB:墙壁
    • [ ] 0B:可进入的盒子。
    • [ ] MLE:普通盒子。

      解决思路

      向右走进入 2ms。

      操作示例

      1dddd

      2 通道

      :::info[注] 因为 1ms 没有通向外部的空隙,所以可以视作普通的盒子。 :::

      结构地图

      2ms

      介绍机制

    • [ ] 1MB:不可进入的盒子;
    • [x] 盒子可以被连续推动

      解决思路

      推开挡路的盒子,绕一圈进入 #37 3ms。

      操作示例

      2dwddsssaa

      3\sim4 转移

      结构地图

      3ms

      4ms

      介绍机制

    • [x] 1MB:进入转移到对应编号的 0B 盒子;
    • [x] 0B:进出正常的盒子。

      解决思路

      向左走进入 4ms/1MB,此时被转移到 4ms/0B 里,再向右退出即可进入 5ms。

      操作示例

      3aaaaa4d,ddd

      5 循环——进入

      结构地图

      5ms

      介绍机制

    • [x] 循环嵌套的盒子可以循环地进入
    • [x] MLE:共用同一个空间的盒子。(否则盒子递归时会复原。)

      解决思路

      从右进入循环嵌套的 #37 5ms/1MB。此时视角放大,表现为进入到 #28。然后先把 #19 5ms/0B 推到 #12,再推动 #32 1ms 到 #30,并从 #22 退出。此时视角缩小,表现为从 #12 5ms/0B 出来到 #11。最后向左走进入 6ms/0B。

      操作示例

      5ddssa,aaww,ssaa,waaa,aa

      6\sim7 取出

      结构地图

      6ms

      7ms

      解决思路

      尝试后发现需要从下方进入 7ms,于是将其推到 #11,从中取出 8ms。再次尝试后发现需要从左边进入,然后将其推出来到 #39,绕一下从 #38 进入即可。

      操作示例

      6asaasaawwd,assddwwww7wwdwwasssss,ss,waassdd

      8 循环——退出

      :::info[注] 这一部分暗示如果正中间没有缝隙,则不可进入。 :::

      结构地图

      8ms

      介绍机制

    • [x] 进入时会到达对应方向边缘正中间。(即只能从 #4 #22 #28 #46 进入。)
    • [x] 循环嵌套的盒子可以循环地退出

      解决思路

      循环嵌套的 #17 8ms 推到 #31,然后从 #15 退出,此时视角缩小,表现为从 #31 8ms 左边出来到 #30。然后将其一路推到 #13,再次从 #15 走出即可到达 9ms。

      操作示例

      8wwdwdsss,waaa,dddsdwwww,ssaaawwaaa

      9\sim11 蜿蜒

      :::info[注] 这一部分暗示如果要从非正中间进入,则需要利用其他同等大小盒子 :::

      结构地图

      9ms

      10ms

      11ms

      介绍机制

    • [x] 同等大小的两个盒子可以从对应位置穿梭。

      解决思路

      一路走到底即可进入 #9 12ms。

      操作示例

      9asssaaww10waaaa11aaaaawwdddddddddwwaaaaaaaww,aw

      12\sim14 分离

      :::info[注] 这一部分引导做题者利用方向对应的盒子构造转向器。 :::

      结构地图

      12ms

      13ms

      14ms

      介绍机制

    • [ ] TLE:不共用空间的盒子。

      解决思路

      一路走到底即可进入 #41 15ms。

      操作示例

      12waaww13wwwwwdddd14dddww,dwwwwwwdddd,ddddssss,sss

      15\sim16 回环

      结构地图

      15ms

      16ms

      介绍机制

    • [ ] TLE:通过进出(无法确定进入还是退出)可以刷新的盒子。

      解决思路

      将 #17 1ms 推入 #24 16ms,再从 #22 退出。然后将 #24 推到 #25,绕下去将 #32 1ms 推入 16ms,(注意此时上一个推入的 1ms 消失了,可以了解到 TLE 的刷新机制。)接着从 #14 退出,走到头即可。

      操作示例

      15sass16saassaa,dassddww,wddwwwwdd,dsd

      17\sim19 转向

      结构地图

      17ms

      18ms

      19ms

      解决思路

      观察 20ms,发现需要利用其他盒子从右边钻进去到 #48;再发现 19ms 刚好匹配,于是考虑将数个 19ms 依次推到 17ms #26 #19 #20。根据目前发现的刷新盒的机制,反复从 18ms 中推出 19ms,利用 19ms 构造转向器即可。

具体来说,可以将数个 19ms 依次推到 17ms #37 #9 #10,然后就可以依次推到 #26 #19 #20,共计 6 个盒子;也可以先推一个到 #37,再推一个从 #22 推出到 15ms #34,然后就可以利用它再推三个到 #26 #19 #20,共计 5 个盒子。

操作示例(方案一)

17dssdddd18ddwddsaaaaa,dddwddsaaaaa,dddwddsaaaaa,aaa19asaawsddwasaw,wwwwwwwwwawdddd,aaassss,dsssddd,ddwddsaaaaa,dddwddsaaaaa,aaa,asaawsddwasaw,wwwwwwwwawwdassdwawddddd,dwddswaasdwdsssssasdd,ssawawdddddsdwwwwsssaaaassdd,ddwddsaaaaaaaaaasawwwwwwwwwwawdddddddwdsssssasdddddsdwwwwwwwawdddddddddwwdww

操作示例(方案二)

17dssdddd18ddwddsaaaaa,dddwddsaaaaa,aaa19aasawwwww,dwaadddssdd,ddwddsaaaaa,dddwddsaaaaa,aaa,aasaawawdssdwwwww,dwadwwasdsaaa,asaaawddddd,dddssdd,ddwddsaaaaa,aaa,aasawwwww,dwaaa,asaawdddd,dddd,dsdwawdssdwwwww,wwawddddd,ddddwwdww

20\sim22 吞噬

结构地图

20ms

21ms

22ms

介绍机制

接下来限制较为自由,需要稍加探索。如果直接将 #18 32ms 向右推会进入 34ms,但入口很窄无法通过。考虑到目标为单独从 #21 退出,于是利用两个末影盒0B&1MB 构造传送器

(注意此时走到 #16 会推出 #15 1ms 到 30ms #9 WA,一开始发现的空位是有用的。)

具体来说,将 #39 33ms/0B 向左推入 #37 32ms 到顶,然后退出并标记 #18 32ms,此时从 #41 33ms/1MB 进入 #18 32ms 内部。最后两次退出到达 31ms #19,再向右走即可进入 34ms。

操作示例

30ddddddd31ds32ssssaawaa,assdddsaa,ad,wawwdwds,wasassdddds33w,sdd,ddd34dssdddw

35\sim38 递归

:::info[注] 此时对 TLE 机制的理解几乎全面,但是没有理解到直接退出才会刷新;同时暗示可以通过末影箱避免刷新。 :::

结构地图

35ms

36ms

37ms

38ms

介绍机制

此时只剩开口在下的 37ms 无法直接进入。由于其只能向下推,考虑利用递归嵌套机制:将第一层 35ms 推进 36 ms 并进入到达第二层,(如果从其它位置进入 35ms,就算推出来 37ms 也会被卡在最下面。)再从中向下推出 37ms 回到第一层,就可以成功进入 37ms,发现刚好向右的开口 #14 处能对应 38ms。

于是可以进一步明确目标:用共计 5 个 1ms(因为其他盒子下面都有缺口,无法使用)将 36ms 填满,再推一个 37ms 到 35ms #19 即可。

考虑到一共有 6 个盒子需要推到第一层,而且它们的位置只能在 #24 #25 #26 #31 #32 #33,所以有三个需要注意的地方:

其中 37ms 需要推到 #31,所以需要优先对其处理;而它的推出过程在探索时就已经推理完成了,只需要再一起推出一个新的 35ms 即可。具体地,在第二层中先将 #31 推到 #33,再将 #33 推到 #32,#40 推到 #39 即可。

接下来考虑最难的部分:如何同时推出 1ms 35ms。具体地,先将第一层 35ms 推进 36ms 并进入到达第二层;现在第二层的目标是向下依次推出 1ms 35ms,但是由于 #24 1ms 只能向上推,于是将 35ms 1ms 依次推入 36ms 并推着 1ms 进入 35ms 到达第三层;此时先将 #24 推到 #26,再将 #32 推到 #39,最后将 #31 推到 #32 即可将 1ms 35ms 依次向下推出到达第二层;注意需要在进第二层时就将 #40 向左推走,才可以将 1ms 35ms 依次向下推出到达第一层。

最后,依次将这 6 个盒子向上推进 #36 就可以成功进入 38ms 啦!

操作示例

35wwddsawasaawddsdwwww36wwww,waawddwddsadsawwassss,ssss,d38dssss,sawww,wwww,waawdsdwddsaaawawdsddwsaawdsdwww,wwww,waawwddswaasdwdssss,ssss,sdsadsawwassss,ssss,ddssss,sasawdwww,wwww,waawdsdwddsaaawawdsddwsaawdsdwww,wwww,waawwddswaasdwdssss,ssss,sdsadsawwassss,ssss,ddsssssawww,wwww,waawdsdwddsaaawawdsddwsaawdsdwww,wwww,wdwwassaawdsdwddsaaawawdsddwsaawdsdwww,wwww,wdwwassss,ssss,sdsawassss,ssss,sdsadsawwassss,ssss,ddssss,ssawwssaaawdawdssddwwssaawdawdssdwww37wwwwwdddd

38\sim45 穿越

结构地图

39ms

40ms

41ms

42ms

43ms

44ms

45ms

介绍机制

为了不主动退出刷新盒而导致刷新,只能考虑通过第一层 41ms 中的 39ms 进入第二层;而因为在限制下无法到达第二层的下半部分,同时第二层 40ms 中的 39ms 可以通向第三层的两个部分,于是可以操作第三层的 42ms。

结合 40ms 中还未使用的从下到右的单向通道 37ms,并考虑到无法进入的目标 45ms,容易想到总体目标:将第三层 #33 42ms 推到 #27,然后将第二层 40ms 中的 #19 37ms 推到第三层 #13,最后即可进入 45ms。

具体来说,基于上文所述的标记与传送操作,在第三层 39ms 中将 #33 推到 #26,传送后将第二层 40ms 中的 #19 37ms 通过 #13 39ms 推到第三层 #22,然后向右推将其推入 42ms,接着推出到 #13 即可进入 45ms。

操作示例

38dddsssdw39wdd41ddsddwd43a,wwd,dww40wwdwdww,wdwsd,ddwdwdd,dww,wawww44s,ddwwwaaaaaa,wwd,dww,wwdwwawdd,ddddd42dsdwwwww,w,wwwww,dddd45a

46\sim49 打破

结构地图

46ms

47ms

48ms

49ms

介绍机制

具体来说,需要推一个盒子进入 49ms,在进入 49ms 循环后通过推进来的盒子回到外层循环。一共有 2 个 46ms 和 2 个 47ms,思考后发现需要按如下方式放置:

确定好每个盒子的作用,并且考虑到将盒子推进 48ms 的顺序是 46ms 47ms 46ms 后,开始逐个处理。

首先构造 47ms 的循环嵌套,这样才能将后续的盒子推入 48ms。注意所有盒子都有用处,所以不能将任何一个盒子卡在死角。又因为 47ms 内部的空间并不大,所以不能将其余三个盒子都直接推进 47ms;而刚好 47ms 内部有一个 46ms。于是只需要在 46ms 中将 47ms 推进 47ms 中完成循环嵌套的构造,剩余盒子再从 #17 46ms 中推出,同时保证先推出的是 46ms。

然后将盒子按顺序推入 48ms 并将 47ms 推入 49ms。不过注意到 48ms 内部有 3 个 1ms,其中 2 个盒子需要在后期堵住 48ms 的入口 #46,而剩余的 #42 1ms 会挡路,于是在构造好 47ms 循环嵌套后需要先行推出 48ms 到 47ms #33。

最后,就可以安全进入 49ms 内层循环,并将 49ms 推入 47ms 外层循环了。具体来说,将 47ms 推进 #32 49ms 并进入 49ms 循环,然后从 #29 退出到达 #24,再将 #32 49ms 推至 #27 后从 #46 推出 47ms 到 #34,接下来将 39ms 推入 #41 37ms。注意,此时 47ms 状态为 1MB,如果直接进入会破坏之前构造的 47ms 循环嵌套;所以需要从 49ms #46 退出到 47ms 从而避免破坏循环

最后的最后,经过前面如此多的铺垫,终于可以一路向前,将 49ms 抛弃在 47ms #20 46ms 入口通道,畅通无阻地到达终点 50ms 啦!

操作示例

46wasawwdwwds47sssaawadsddwwww,asdddaawasswwasdssaawdsdwawdssss,ssss,sssasddawwwww,ww48aawwddddd38dssss,ss,ss,sssaw,wawwwddddaaaasssdss,dwwww,ww,wawwwddddd,aas,ss,sssaw,wwwawddddaaasssss,dwsaawdsdwwww,w,wwwwwaaww,wwddddd,dssss,saas,ss,ssassdwwwww,w,wwwwwaaww,wwddddsdsaas,ss,ssassdwwwww,w,wwwwwaaww,www,wwwawdddd,aaasssss,dww49www,waawaa,ddassswwwdwdsswaassss,ww,w,wwwawwaww,wwdww,wwwddsdd,ddw50

50 脱离

结构地图

50ms

解决思路

:::warning[既已脱离,因何回首?] 当然是悖论彩蛋啦~ :::

操作示例

50EXIT

0 悖论——虚空

结构地图

解决思路

虽然可以通过末影盒传送避免刷新盒刷新,但是如果直接退出标记末影盒所在的刷新盒,标记就会被破坏,此时如果尝试传送,会到达虚空,达成虚空悖论

具体来说,可以从 39ms 下边进入,标记 43ms 后直接退出,再从左边进入,进入 44ms 后一直退出即可。

操作示例

39wdd41ddsddwd43a,saawaaa,ass,awd,dww40wawww44sddwwwaaaaaa\0

\infin 悖论——无限退出

结构地图

解决思路

如果将循环嵌套盒中的内层嵌套盒推出外层嵌套盒,这个嵌套盒就会无限退出自己,此时从开口退出就会达成无限退出悖论

具体来说,可以将 46ms 中的 #32 46ms 从 #46 推出,再从 #46 退出即可。

操作示例

46aawwdssss\infin

\varepsilon 悖论——无限进入

结构地图

解决思路

如果将 1MB 盒推入 0B 盒,并在无法推动内部 1MB 盒的情况下进入,因为在 1MB 盒中会转移到对应 0B 盒,但此时 0B 盒中依然是 1MB 盒,于是就会无限进入盒子,达成无限进入悖论

具体来说,可以在完成 47ms 的循环嵌套构造后,先直接将三个末影盒同正解操作推到 48ms,然后将三个 1ms 推出,最后将 47ms/1MB 推出即可将 47ms 入口处填满(#32 46ms,#25 #18 #11 1ms,#4 47ms/1MB),此时进入 #34 47ms 即可。

操作示例

46wasawwdwwds47sssaawadsddwwww,asdddaawasswwasdssaawdsdwawdssss,ssss,sssasddaaww,wawwwddddaaaasssdss,dwwww,ww,wawwwddddd,aas,ss,sssaw,wwwawddddaaasssss,dwsaawdsdwwww,w,wwwwwaaww,wwddddsswwd,dssss,saaaadddwwaaaasss,ss\varepsilon

后记

肝了好几天,终于完工啦~!

也许有人会问:“花这么多时间来写这样一篇题解,真的值得吗?”是的,也许这对竞赛的学习没有一点知识性的帮助,也许这就是一个很的行为。但竞赛的学习中,不正需要这种为了热爱而坚持,因为坚持而热爱的热情吗?

\text{去感受和珍惜想出题调出题时的快乐,对未知的好奇与探索未知的欲望。}

无论如何,愚人节快乐!