2026 年洛谷愚人节比赛题解 & 特殊奖励条件
2026 年洛谷愚人节比赛题解 & 特殊奖励条件
E.Space
·
2026-03-29 02:59:37
·
题解
出题人:小 E,sky,BpbjsGreen,xsmyy,aqua。
UID Problem
all:sky
很签到的一道题。
虽然说,实际上 SPJ 还是读不了提交评测的用户的 UID,但是洛谷的 UID 还是不难获得的。你只需要找到洛谷的官方账号 https://www.luogu.com.cn/user/3,就会发现洛谷的 UID 是 3。输出 3 即可。
本题的 SPJ 只是判断了选手输出是否为 3。
数字三角形
all:小 E
一道看起来挺正常的数字三角形题目,除了数据范围说所有的三角形都只有 13 行。
按照正常方式交一发之后能够得到 50 分,并且发现有 13 个子任务组成一个三角形,测试点编号是打乱的。
于是将测试点编号当作输入,直接在所有测试点输出这个答案就能得到满分。
由于洛谷同一个子任务中的测试点编号都是从小到大排序的,所以其实不需要真的跑一遍算法,只要把每个子任务的最后一个测试点编号加起来就可以了。
追忆
idea:sky,aqua
题面:sky
数据:sky
题解:sky
题目背景的“时空”提示查看时空限制,它们是 118ms 和 31MB。结合题目描述的“省选”,加上题目标题,共同指向了 P11831 [省选联考 2025] 追忆。注意力敏锐一点还可以发现题目背景的“重新呼唤”是英文名称 recall 的字面直译。时空限制藏的题号也算是对原题最后一句“请注意本题特别的时空限制”的 callback 了(?)。经过比对会发现这两题的题目背景正文的文段格式完全一致,但是文字有很大差别。
因此题目中小 S“找来的材料”其实指的就是前文中找来的题,小 S 在仿写题目背景。
根据题目描述的提示,需要关注给出的文字和原文“重合”的部分。加上题目描述“每一句看上去都有些问题”、说明提示中“逐字逐句认真看”的提示,会发现每一句话中都恰好有一个文字与原文是相同的(且位置一样)。
数一下发现刚好一共有 16 句话。结合样例输出的“数字转字母”提示,猜测要从每句话得出一个数字,再转成字母。题目中说“小 A 不知道问题具体出在哪里”,所以这个数字显然就是和原文出现“重合”的位置了。
这个要肉眼硬看也是可以的,因为特意在题目背景前面加上了一句话,这样后面的文字就能在网页上直接和原题对齐。但是显然借助工具“查重”会更加方便。
最后可以得到 7,5,20,2,9,20,19,5,20,9,14,16,12,1,3,5,它们都在 26 以内,考虑直接按字母表顺序转成字母,就能得到答案 getbitsetinplace,提交上去就能过。
然后你会发现这个建议其实指的不是小 S 文学写作能力上的建议,而是针对小 S 反复 TLE 的建议。题目里也没有很明确的指出是什么方面的建议。
而且因为没有明确的断句所以理解成 get bitset in-place 或 get bit set in place 等看上去都是比较有意义的答案,不过前者更贴切题目就是了。
P.S. 虽然文学写作能力确实不好,但是题目背景的大部分内容还是由小 S 自己完成的(为人工完成+AI 润化),还藏了些私货 qwq。
后记:出梗题,但是要留下让不知道梗的人也有机会通过的小提示还是挺有难度的()
伟大的更新
idea:sky
题面:sky,aqua
数据:sky
题解:sky
展开层层嵌套的题目背景,发现最内层出现了“Too many levels of nesting!”的内容,并且折叠框标题变成了默认的文本“提示”,这看上去很奇怪。复制题目的 Markdown 代码,会发现原来的内容是在“找到原题”的折叠框中写着 SP10707 的题号。
确实,这道题的原题是 SP10707,一道经典的树上莫队/树分块,复杂度是 O(m\sqrt n) 的。
然而观察数据范围会发现,这样的算法只能通过前 20 个测试点。如果把代码提交上去(注意输入格式不一样),在前 20 个测试点还有大约一半的测试点也无法通过。这说明题目可能另有玄机。
关键在于理解渲染机制。经过一些猜测和实践,会发现洛谷的新 Markdown 语法为了防止滥用,设置了一个最多嵌套 10 层的设定,而第 11 层的标题会替换为空(而显示默认文本),并且内容被替换为“Too many levels of nesting!”,再内层的所有内容就不再显示了。
(注:这个特性不是愚人节限定,它一直存在着。)
再看到数据范围中对 u,v 的描述是“真实存在”。结合“一些补充”中的“到时候看看渲染效果”,题目描述中的“模拟阅读渲染出来的……”可以猜到,这里“真实存在”暗示的是渲染出来后这个折叠框仍然保留着,而输入格式中 n 指的是“Markdown 代码中”的结点数,所以数据范围中才没有明确写出 1\le u,v\le n 之类的限制。
因此,要模拟渲染出来的效果,就应该把深度大于 11 的折叠框全部忽略掉。同时需要注意深度为 11 的折叠框的标题会被替换为空,结合“一些补充”的说明,它们应该算成和所有原来的 a_i 都不同的新的数,比如 0。
这样一来,树的最大深度被限制的很死,任意一条路径就不会超过 21 个结点了。这个数很小,就不用像原来那样处理查询了,直接暴力跳到 LCA。
所以正解是:读入树结构,将深度为 11 的结点权值替换为 0,并对所有权值离散化;每次询问时,从两端分别跳到 LCA,统计路径上出现的颜色数。时间复杂度 O(n\log n+md),d 指的是询问涉及的最大深度。而且还是在线的。
测试时有一定常数的 std 不加快读稳定在 600ms 内,加快读稳定在 450ms 内。因为是愚人节没有太刻意去卡什么。
Fun Fact:无论展开到哪一层,题目背景的内容连起来都是能大致正常阅读的。
度日如年
idea:xsmyy
题面:xsmyy,sky,小 E
数据:xsmyy,sky
题解:xsmyy,sky
先做题,发现只能获得 42 分,而原本应该全是 AC 的每个测试点变成了一个 6*7 的表格,并且只有一些前缀和一些后缀是 TLE,中间是 WA 和仅有的一个 AC。联想题目背景和时间有关,这其实是一个日历。
题目名称是“度日如年”,经过测试可以知道,每过大约 4 分钟,AC 会移动到下一天,即用一天的时候模拟了一年的时间。
由于题目背景说“要是现在是休息日就好了”,所以让 AC 停在任意休息日即可得到满分。
会有人做完题直接就通过的可能性,但是这也是没办法的事情。
Time Traveler
all:sky
“到 2026-04-01 为止,最后结束的官方比赛”其实是这场愚人节比赛。只是由于 LGR-276 比愚人节比赛更晚开始,所以在比赛列表中的显示在时间上更靠后。
因为洛谷愚人节比赛的编号是负数,所以加上一个 x 只会变成之前举办过的负数编号比赛。
找到前 10 场负数编号比赛的信息然后输出即可。
最近上线了搜索比赛的新功能,直接搜一下 【LGR-(- 就能拿到列表。
print(["2025-08-14","2025-08-10","2025-04-03","2024-08-18","2024-08-11","2024-03-29","2023-08-14","2023-04-08","2023-03-10","2023-02-03"][int(input())-1])
重影
idea:sky
题面:sky
数据:sky(后两关),xsmyy(前四关)
题解:sky(机制和关卡解法),xsmyy(机制和地图)
这是一个需要猜规则的解谜游戏。
为了防剧透,下面的部分被分类放进了折叠框里。
:::info[如何理解机制?]
首先随便提交点什么,会得到第一关的地图。经过尝试可以知道是要控制 AC 推动箱子,将箱子推到指定位置。这在题目背景中也暗示了。
通过第一关后,可以看到第二关的地图。但是直接走过去通过第二关后,会发现虽然第二关的指示灯变绿了,但是第一关的指示灯变回了红色,并且画面中会显示第一关的玩家把箱子推到了右下的墙角,无法再推出来了。
通过进一步探索就会发现,实际上,这道题是多个推箱子的关卡重叠得到的,所有关卡玩家初始位置相同,移动序列对于每个关卡同时生效。需要找到一个移动序列使得每个关卡都可以通关。
本题的角色无法同时推动多个箱子。
关于得分机制,题目描述中明确了得分规则。Subtask 1 有六个测试点,测试点状态为 AC 代表对应关卡的箱子已全部到达指定位置。各关卡的分数分别为 14,15,16,17,18,15 分,这可以在对应测试点 AC 时的时空信息看出。本题得分为操作结束后,此时通过的 x 个关卡分数之和,再加上 x-1。
虽然不能直接知道所有箱子的初始位置,但是通过模拟玩家在已操作序列中的移动轨迹,以及通过输出特定操作序列后关卡指示灯是否变为 AC 可以验证出所有箱子可能的初始位置。
六个关卡全部通过后,所有测试点都将显示为 AC。
:::info[地图]
下面是六个关卡的地图。
(六个关卡的地图拼起来正好是 LUOGU❤)
Fun Fact:原本爱心是通过全部五关后的结算画面,后来为了增加一点难度和趣味性修改为了新的关卡,这样也产生了更多样的具有区分性的答案。
:::::::info[关卡的大致解法]
对于每一关,首先会有一部分的提示,最后给出一个参考的解法思路(做法可能不唯一,但基本都是预期内的解)。
::::info[第一关]
你需要输出 WASD 操作序列来控制 AC 移动,推动 MLE 箱子到达时间、空间特殊的目标位置。
:::info[参考解法思路]
可以直接推动箱子到达终点。
:::
::::
::::info[第二关]
如果前两关的角色位置一直相同,那么无法同时通过这两关。
需要利用第一个拐角处的缺口让前两关的角色产生错位。
:::info[参考解法思路]
一种方法是往下走三格后,先往右,再往上,这样两者的距离就被拉大了。然后先完成第二关,再完成第一关。
:::
::::
:::::info[第三关]
第三关本身需要从下面绕一圈才可以过关。
如果直接绕的话,本关和第一关角色的位置会完全同步,不可能在保证第一关不进入死局的情况下通过第三关。
唯一的方式是在上方就让这两关的角色产生错位。
::::info[进一步提示]
第一关的角色不能先于第三关的角色到达下方,否则此时的错位是没有用的。
需要通过操作让第三关的角色相对于第一关的角色在其下方。
:::info[参考解法思路]
先让第三关的角色走到贴着上边界的墙的箱子下方,然后向上操作。
此时第三关的角色由于被顶住不会往上,其它两关的角色会回到初始位置。
接着就可以操控第三关角色先到达最下面了。然后往右到底,再往上,三关的角色就可以分开。
::::
:::::
::::::info[第四关]
这一关的空间更为狭窄。
建议先确定三个箱子的初始位置。由于三个终点分别在三行并且没有左右贴边,因此箱子初始的状态不会贴着左右边缘,且至少有一个在中间那一行,分别最多有一个在靠上的一行和靠下的一行。
可以想到比较好看的初始状态是三个箱子分别在三行。这一点可以通过盲推检查对应的指示灯是否为绿色来验证,确实如此,且角色初始位置在左上角。
而具体的列数,可以在盲推的同时尝试向上或向下顶墙,模拟移动的路线,通过指示灯来确认,可以得知三个箱子最初都在角色初始位置的右边一列。
::::info[进一步提示]
要在移动的过程中保持中间的箱子不会向上或向下移动,且三个箱子不会顶到左右边界。
这一关的箱子全部到达目标位置后不能再被移动,否则不能再通关。这相当于当箱子推动到目标后,所有关卡的角色无法再到达比当前位置更右的地方了。这会对行动造成很大的限制。
为了避免,建议最后通过第四关。
:::info[参考解法思路]
从第四关开始情况会变得比较复杂,可以写一个简易的程序在本地模拟所有角色的移动,这样能够更加直观。
最开始仍然要进行让第三关角色靠下的调整操作。但是此时很容易将第四关的箱子推到左边缘。
一种解决方法是先向右,再向下,再向右。此时第四关的角色被固定在上边缘,没有向下走过。再继续调整即可。
其它并没有什么特殊的,在移动的过程中时刻留意第四关角色的位置即可。善用上/下边缘的箱子来顶住,让操作其它关卡角色时保持第四关的角色上下位置不变。除了最后时刻,一定不要让三个箱子在同一列。
::::
::::::
::::::info[第五关]
第五关本身较为复杂,并且到达第五关时的画面取决于前四关的操作序列,不同序列可能会有很大的不同。
此时可能在推理箱子初始位置时遇到困难。可以尝试所有可能的位置盲推看结果,但是由于本身过关就比较复杂,所以可以使用另一种方法:微调已有的操作序列,查看第五关的真实状态。
由于关卡的墙的形状不会改变,在某一刻角色的大致位置还是能推理的。例如,如果发现由于有箱子太靠右边导致目前无法过关,就尝试调整序列中可能影响这个箱子的连续的 D,在中间穿插一些其它操作,或者调整操作的顺序,保证前四关通关的同时,可以看到第五关箱子的位置变化情况。最终就能推出箱子大致的初始位置,至少可以确认一个箱子在下方目标点的上面一行,另一个箱子在右侧目标点的左边一行。
::::info[进一步提示]
由于这一关通关序列较为复杂,可以把这一关的操作拆开分散到操作序列的各处。
详细来分可以分为:将下方的箱子推到第五列;将下方的箱子推到底部第六行;将下方的箱子推到第三列;将右侧的箱子推到第五行;将右侧的箱子推到右侧第六列;将右侧的箱子推到目标位置;走到最左边;将下方的箱子推到目标位置。
:::info[参考解法思路]
其实要避免不小心推动其它箱子,大部分情况只需要在连续朝一个方向操作的时候,走到一半先往上或下移一步,或者利用不同关卡的空间不同来调整位置就可以了。这里只提比较关键的地方。
不用太在意在操作时把第五关右侧原本推下来一格的箱子推回去。等真正方便的时候再管这个箱子的挪法,比推下来之后一直刻意绕开它容易得多。
有些操作序列到最后会发现由于要避免推动第四关的箱子不得不往下走,导致难以将第五关角色移到最左边。由于不能影响中间一行的箱子,在往左的时候必须让第四关角色到达最上或者最下边。而如果往下,第五关下方的箱子就会被推动到角落,因此只能往上。那么解决方法就是回溯一段时间,提前把上面的路通开,让以后能够往上走。
最后的最后还可能由于第四和第五关的目标位置所在列不同导致调整时将第五关的箱子推过头。一种方法是让角色到达左下角,再向上让第五关的角色到达最左侧的中间一行。这样不会破坏第三关的通关状态,且此时往右不会让第五关的角色往右。
::::
::::::
::::::info[第六关]
第六关相比第五关难度要小,只有一个箱子。主要考察的是推断出箱子最初的位置,以及对先前操作序列的微调。
箱子最初的位置很显然可以通过盲推得出。调整操作序列使得途中不要有把箱子推到边缘的操作即可。
运气好的话在完成前五关后第六关的状态看上去还是可通过的(虽然此时不一定真的能在不破坏前五关状态的前提下通关)。
:::info[参考解法思路]
第六关相当于把行动范围限制在一个偏小的区域中,但仍然能够完成,只是很多步骤会变得更加复杂。如果直接在原序列上改,部分操作序列长度在这里可能会长出不止一半。
在保证其它关卡不出问题的同时,尽快把角色移动到右上角。进行其它操作的时候让其尽量在右上角打转,同时可以把箱子推到第四行,但是不要推过头。
快结束时,在往左移动第五关角色的时候将第六关的箱子推回正中间。
进行最后的操作时,选择某个接近的时候多走几步让这个箱子向下,然后不要再动到这个箱子即可。
::::::
:::::::
还有一个小细节,本题的用时为输出中有效操作的次数,因此想获得最优解的话,那就优化操作序列吧~
Fun Fact:本题的 SPJ 编写耗时不到一天,但是从 2025 年写到了 2026 年。
填词游戏
all(除 data):BpbjsGreen
data:sky
所有空格的答案如下:AC, TLE, RE, WA, MLE, TLE, WA, OLE, AC, RE。
发现所有答案都是洛谷的测试点状态,只有输出 AC 的测试点是满分,其他的测试点输出正确答案都只获得了一半分数;在答案为 WA 的测试点输出错误答案竟然是满分。
所以猜测对于每一个测试点,都要让评测状态与答案相符(例如为答案是 TLE 的测试点编写超时代码)才能获得满分,事实上也确实是这样。
scanf("%d", &n);
if (n == 1 || n == 9)
puts("AC");
if (n == 3 || n == 10)
printf("%d", 114514 / 0);
if (n == 2 || n == 6)
while (1);
if (n == 5)
deque
if (n == 8)
while (1)
puts("1234567890");
您看我这,求求你给我几分吧?
idea:xsmyy
题面:小 E,xsmyy
数据:小 E
题解:xsmyy
题面就是交互题模板,P1733。
但是正常用二分只能得到 2 分。
题目背景写道,“给你几分好呢?看看你给我几分吧。”以及说明/提示部分有一个“评分方式”的标题,以及题目标题有一个“您看我这”,其实说的是,评分方式和你给出的算法有关。二分算法可以得到 2 分,三分算法可以得到 3 分,依此类推。所以你需要使用一个“一百分”算法来获得 100 分。
具体来说就是:每次将区间分成一百份,确认在哪个小区间中,然后在小区间里继续分治下去。
幸运数字
idea:sky
题面:sky
数据:sky
题解:aqua,sky
首先会发现,这道题没有给出“幸运数字”的任何定义,但是要计算一个数字在“过去五年被神谕选中的次数”,这说明需要主动找到这些“幸运数字”的定义。
注意到这道题目有一个“2026”的时间标签,这提示了“过去五年”的重要性。
题目背景里写道,“它们都由同一位神祇降下,使用了同样的名字,藏在那片森林的某个角落”。“同一位神祇”暗示这五年的“神谕”来源相同,“同一个名字”暗示这五年的“神谕”有相同的标题,而那片“浩瀚的知识之森”,指向的是洛谷题库。
说明提示中的“那些神谕的名字,可能就在最明显的地方?”,指的是题目的标题。根据“在森林入口呼唤那个名字”的提示,去题库搜索标题“幸运数字”,会发现在搜索结果的前面很显眼的是五道来自信息与未来 2021-2025 的题目,它们都叫“幸运数字”。点进去就能看到五个对“幸运数字”的定义。带入样例验证,发现样例输出就是输入的数字在这五个定义中满足的数量。因此本题的做法就是输出输入的数字满足五个条件中的几个。
接下来就只需要完成代码就行了。其中一部分题目是有题解的,可以复制。由于题目很简单,AI 也可以生成正确的代码。自己完成虽然麻烦一点,但也不是很难的事。
Fun Fact:五个条件的 18 种存在的不同组合均有至少一个数字在数据中。其中最特殊的是 1023,它是数据范围内唯一一个同时满足 2023、2024 和 2025 三个条件的数字。另一个神奇的点是 2023 满足 2024 年的条件,而 2024 满足 2023 年的条件。
Fun Fact 2:刚开始这道题还有个【语言入门(请选择[入门与面试]题库)】的 tag,但是在开赛前不久该 tag 括号里的内容被删掉了,因此只能把这个 tag 去掉避免误导。
BDFS
idea:xsmyy,sky
题面:xsmyy,sky
数据:sky
题解:sky
观察题目背景的加粗内容,是“北上广深”。
所以广搜对应广州,深搜对应深圳。
怎么判断一个图和广州还是深圳有关呢?
看看样例和下发数据的图,会发现边数相对于点数不是很多,边权总是在一个很小的范围内,且存在许多重复。把一些比较小的图画出来后,还会发现相同的权值的边集基本把图拆成了一条条链。
结合“地图的指示”,可以联想到地铁。给出的图的结构与地铁线路图十分相似,边权可以看作地铁线路的编号。尝试在广州和深圳的地铁线路图找到样例,结果如下图:
:::align{center}
:::
因此每组数据的输入都是地铁图的一个子图。只需要将输入数据与两个城市的线路图进行比对,即可得到每组数据的答案。
这是每组数据在城市地铁图上的位置(可能有小部分不唯一,但城市是确定的):
:::align{center}
:::
因此答案为:
DFS
BFS
DFS
BFS
DFS
BFS
BFS
BFS
DFS
DFS
fun fact:较小的图放在前面但是实际上较大的图更能看出思路。
DFS 序
idea、题面、数据、std:小 E
剧本:小 E,sky,xsmyy
参演:小 E,VinstaG173
这道题在比赛开始时几乎是不可通过的。提交原题代码可以得到 24 分。
直到比赛开始后 3h 左右在比赛公告处出现“已有人反馈 L 题存在问题,但是暂时无法修正,请自行完成该题。”
这道题的特殊之处在于它是一个主题库题目。反馈一个主题库题目存在问题通常是通过工单完成的。所以在工单列表搜索本题题号,可以找到一个关于这道题的工单。
工单的内容说写 std 的时候把 w 读反了,于是你倒过来读 w 就可以通过本题。
看图说话
all:BpbjsGreen
每一个语句对应了一种图,某些选项可以直接把描述丢到搜索引擎里,结合它是一种图的名称得到唯一答案。解释如下:
选项 A:元稹《菊花》。
选项 B:干旱的环境大概是指沙漠,思考在沙漠中生存的生物,得到答案仙人掌。
选项 C:伍佰《挪威的森林》。
选项 D:柳宗元《种树郭橐驼传》,被选入人教版高中语文教材选择性必修下。
选项 E:环(语句描述的是代数结构)。
选项 F:链式反应。
选项 G:被分成两半的图,即二分图。
写程序判断输入的图属于哪个选项描述的一类图即可。
选出“最准确”的一项,也就是若这个图同时属于 A,B 两个分类且 A 分类属于 B 分类,则你应该输出图属于 A 分类。从“最小”的类别开始判断图属于哪一类即可。
下面写出了题目中 7 个图分类的关系。
菊花属于树,链属于树。因为 n\geq10,图不可能又是链又是菊花。
树属于森林,森林属于二分图,树属于仙人掌。一个图不可能又是非连通森林又是仙人掌,因为仙人掌是连通的。同时是二分图又是仙人掌且不属于其他分类的图不会在数据中出现。
偶环既属于二分图又属于仙人掌,奇环属于仙人掌。
我添加了一些 Hack 数据,还是好好写判断代码吧。
FUN FACT:最后一个测试点的答案是 B, G。
犇犇犇犇!
all:sky
众所周知,在洛谷,普通用户的犇犇长度存在一个 140 字符的上限。
比赛说明中说明了小 E 是本场比赛的负责人 E.Space,是管理员。
管理员没有犇犇长度限制,因此输出 1 即可。
Escape's Metabox
all:小 E
playtest:sky,aqua
这是一个需要猜规则的解谜游戏。
为了防剧透,下面的部分被分类放进了折叠框里。
:::info[题意]
这是一个由盒子构成的世界。盒子里面可能还有别的盒子。这个世界里只有有限多种不同的盒子,但是由于某种原因,这里看上去似乎有着无穷无尽的盒子。我要走进所有五十个不同的盒子。得分为进入过的盒子数量乘 2。
:::
::::::info[地图与机制]
每一种机制都在谜题中有一个基础的教学。如果不想被剧透可以直接跳过这个部分。
:::::info[AC]
玩家的位置。
:::::
:::::info[WA]
空地。
:::::
:::::info[MLE, TLE, UKE]
表示一个盒子或这个盒子里的墙。
空间显示为 999MB 的是墙。其余的表示盒子。
时间为这个盒子的编号。
此外空间可能显示为 0 或 1MB。不同状态的盒子有不同的机制。
::::info[MLE 的机制]
最多只会有一个 MLE 盒子实例的空间显示为 0,其余的显示为 1MB。
编号相同的所有 MLE 盒子共享它们的内容。
玩家和盒子移出一个 MLE 盒子的时候总是从那个空间显示为 0 的实例向外走。
::::info[TLE 的机制]
TLE 盒子的空间显示总是为 0。
每个 TLE 盒子实例的内容是独立的。它们的初始内容由编号决定。每个编号的 TLE 盒子都有自己的模板。保证模板中不包含初始空间显示为 0 的 MLE 盒子和 UKE 盒子。
玩家移出一个 TLE 盒子实例时会重置其内容为其模板。
::::
::::info[UKE 的机制]
最多只会有一个 UKE 盒子实例的空间显示为 0,其余的显示为 1MB。
编号相同的所有 UKE 盒子共享它们的内容。
玩家移入一个 UKE 盒子实例的时候会将这个实例变为那个空间显示为 0 的实例,将原本那个空间显示为 0 的实例变为 1MB。
玩家和盒子移出一个 UKE 盒子的时候总是从那个空间显示为 0 的实例向外走。
:::::
:::::info[移动的机制]{open}
这部分直接放在“关卡的大致解法”部分介绍。
:::::
::::::
::::::::info[关卡的大致解法]
关卡编号即盒子的编号。用蓝色标题表示教学关。用橙色标题表示非教学关。这一级的每个折叠框代表一个关卡。
:::::::info[Level 1]
基础移动和进入盒子的教学。
:::::::
:::::::info[Level 2]
推箱子的教学。你可以同时推动连在一起的多个盒子。
:::::::
:::::::info[Level 3 ~ 4]
MLE 盒子机制的初步教学。
:::::::
:::::::info[Level 5]
MLE 盒子机制的进一步教学,尤其是关于从哪里出来的问题。移动机制的教学,关于进出箱子的方向和位置。说明盒子可以放在自己里面。
:::::::
:::::::warning[Level 6 ~ 7]
你需要把盒子推出盒子。
:::::::
:::::::warning[Level 8]
通过从盒子出去,你可以到达一些看似到不了的地方。
:::::::
:::::::info[Level 9 ~ 11]
关于移动的教学。如果移出盒子时要马上进入另一个盒子,那么会尝试从对应的坐标进入。
:::::::
:::::::info[Level 12 ~ 14]
TLE 盒子机制的初步教学。每个 TLE 盒子的内容是独立的。如果不是上面的情况,进入一个盒子时总是从中间的坐标进入。
:::::::
:::::::info[Level 15 ~ 16]
TLE 盒子机制的进一步教学。移出一个 TLE 盒子的时候会重置里面的内容。
:::::::
:::::::warning[Level 17 ~ 19]
由于移出 TLE 盒子时会重置,所以可以反复进入以获取多个 19 号盒子。
::::::warning[进一步提示]
你一共需要使用 5 个 19 号盒子。
:::::warning[最后的提示]
可以把 19 号盒子推到 17 号盒子外面用来掉头。
:::::
::::::
:::::::
:::::::warning[Level 20 ~ 22]
20 号盒子是用来展示 23 号盒子在哪里的。你必须从右边走出 21 号盒子。
::::::warning[最后的提示]
22 号 TLE 盒子可以用来让挡路的盒子消失。
::::::
:::::::
:::::::info[Level 23 ~ 26]
UKE 盒子机制的初步教学。UKE 盒子的空间是共享的。0 和 1MB 的显示会切换。
:::::::
:::::::info[Level 27 ~ 29]
UKE 盒子机制的进一步教学。从哪里移出和玩家上一次从哪里移入有关。通过移出盒子的方式进入 UKE 盒子并不会改变它的状态。
:::::::
:::::::warning[Level 30 ~ 34]
34 号盒子的入口很窄,你无法直接把 32 号盒子往里推。
::::::warning[最后的提示]
你需要使用类似前一关的方式来到 32 号盒子右边。
::::::
:::::::
:::::::warning[Level 35 ~ 38]
TLE 盒子也可以包含自己。
想进入 39 号盒子,必须借助 37 号盒子。但是需要放 37 号盒子的位置上面有 36 号盒子,需要有东西顶着才不会把 37 号盒子往上推。
::::::warning[进一步提示]
可以从 35 号盒子里的 35 号盒子里不断拿取 1 号盒子。37 号盒子也必须从里面拿,因为它的初始位置靠着 35 号盒子下方墙壁。
:::::warning[进一步提示]
必须从 36 号盒子的里面进入 35 号盒子才能从里面把东西推出来。你每次最多可以推出两个盒子。你一共需要五个 1 号盒子和一个 37 号盒子。
::::warning[最后的提示]
你需要考虑推出 35 号盒子才能获得更多的盒子。
外面的那个 37 号盒子可以推到盒子外面。
::::
:::::
::::::
:::::::
:::::::warning[Level 39 ~ 45]
你可以移入你的盒子外面。
45 号盒子没法直接进去,需要借助 37 号盒子。
由于 1 号盒子的四周没有入口,所以它和普通的箱子没有区别。
::::::warning[进一步提示]
你需要两次进入同一个 39 号盒子实例。
:::::warning[最后的提示]
可以通过移出 UKE 盒子的方式来到更外面的层级。
:::::
::::::
:::::::
:::::::warning[Level 46 ~ 49]
这一关相当困难。不过即使不完成这一关也可以得到 98 分。
49 号盒子如果直接进入,会发现必须切换里面的 49 号盒子的状态才能到达右边,这样就会被困在自己套自己的循环里。所以需要打破这个循环。
::::::warning[进一步提示]
观察几个盒子,打破循环的唯一方式只有将 47 号盒子推入 49 号盒子,并将里面进入过的 49 号盒子在右下角的位置推入 47 号盒子,最后重新移入位于 48 号盒子中的 49 号盒子。
:::::warning[进一步提示]
47 号盒子只能从 48 号盒子左边,借助 46 号盒子进入 49 号盒子。要将盒子推入 48 号盒子,就必须有一个 47 号盒子在 47 号盒子的右下角。要从 48 号盒子的左边进入,就必须使用 46 号盒子左上角的出口,且用一个 47 号盒子或 1 号盒子顶在 48 号盒子的正下方。
::::warning[进一步提示]
于是必须先将一个不包含 46 号盒子的 46 号盒子推入 48 号盒子,然后从右边出来往左推。由于此时无法将 1 号盒子从右边推入 48 号盒子正下方,所以必须使用 47 号盒子顶住另一个 46 号盒子。
::::warning[进一步提示]
然后将第一个 46 号盒子推到 48 号盒子左上方时就可以从中间的道路把 47 号盒子推到左下角,且把两个 1 号盒子推到 47 号盒子的右边,顶住 48 号盒子下面的入口。注意到 48 号盒子里只有两个 1 号盒子的时候才能这么做,所以需要在将第一个 46 盒子推入 48 号盒子之前将 48 号盒子中最右边的 1 号盒子推到 47 号盒子右下角的 47 号盒子左边。
::::warning[进一步提示]
于是进入 48 号盒子的顺序是 46,47,46。最后一个 46 号盒子一定是初始在 47 号盒子里的那个,那么就一定要让 46 号盒子比 47 号盒子先推出 46 号盒子。
注意初始在 47 号盒子里的 46 号盒子的位置。把盒子往外推的唯一方法是从它的右边推出一个盒子,然后从下面走出来,并将它往上推。
初始在 47 号盒子里的 47 号盒子显然要先推入 46 号盒子,然后再从另一个 47 号盒子的上方推入 47 号盒子。
::::warning[进一步提示]
然而 46 号盒子里是很难将两个箱子换位置的。所以最后一定是 46 号盒子在上面,47 号盒子在下面。
但是 46 号盒子里几乎没有能够从 47 号盒子上方进入 47 号盒子的位置,除了初始放着 47 号盒子的那个位置。
:::warning[最后的提示]
其实还有一个。是 46 号盒子底下的出口。
只要将空间显示为 0 的 46 号盒子放在初始是 47 号盒子的位置,那么它的底下就出不去了。所以在那里可以从上方将一个 47 号盒子推入另一个 47 号盒子,然后再从 47 号盒子中的 46 号盒子下方进入 46 号盒子再把它往上推出来。
::::
::::::
:::::::
:::::::success[Level 50]
盒子内部的墙组成的字样是 "EXIT"。只要来到这里,你就可以获得满分。
:::::::
::::::::
:::info[关于标题]
标题是 neta 的《Patrick's Parabox》。这里 Metabox 意为“装着盒子的盒子”。本题借鉴了该游戏和《Recursed》的一些机制。
:::
Aqua Problem
idea:aqua
题面:aqua
数据:sky
题解:aqua
首先会发现,本题中树的大小并没有用最常用的字母 n 表示,而是用了 a。把整个题目仔细阅读一遍,会发现在具体的操作中,作为树的大小的 a 和询问次数的 q 这两个变量名居然再次出现了。再检查一下样例,会发现操作里的 a 和 q 确实等于刚开始输入的 a 和 q。
进一步,会发现样例中操作 2 和 3 中的 x 和 y 也是一样的。于是可以猜到,其实所有的这些变量都是全局的,每次输入相同名称的变量时,它的值也是相同的。因此每个类型的操作是固定的。
知道这一点后,就只需要先将所有变量的值确定下来,再随便维护结点 a 的权值即可。
本题的数据如标题一样水(由于询问必须相同的限制,它本身也强不到哪去)。一些没有注意到变量名相同的解法也可能拿到很高的分数。不过这也是愚人节的一环,不是吗?
Special Thanks 4 ...?
idea:xsmyy,sky
题面:sky
数据:sky
题解:sky
看到题目名称和背景,很容易联想到往年愚人节比赛中要求输出出题人名单的 Special Thanks 题。然而这道题只需要输出 YE5 和 N0,而不是出题人。
题目名称是 "Special Thanks 4 ...?",其中 "4" 谐音 "for",但这不是重点。重点是省略号指的是什么。
题目背景中“特殊”被标粗了。“特殊的东西”是什么呢?根据说明提示的“这道题不需要”,说明这道题本身没有“特殊的东西”。而同时输出格式中强调了“注意:本题没有 Special Judge”,Special Judge 里正好也有一个“Special”。可以猜到,本题要感谢的其实是 Special Judge。如果把题目中的 Thanks 全部替换成 Judge,题目仍然是通顺的。
因此,只需要通过标签确认本场比赛哪些题有 Special Judge,并按顺序输出即可。不过注意输出格式中的提醒,本题的输出是 YE5 和 N0 而不是 YES 和 NO。
特殊奖励:
【Speedrun】赛时在“重影”一题获得最优解,即用最少有效步数获得 100 分,对应提交记录的拥有者。若有多个满足,取最早的提交。
【Overflow】赛时或赛后在“Escape's Metabox”一题分别达成无限进入和无限退出两个悖论,且在 4.1 23:59 之前将对应两个提交记录链接附带奖项名称发送给 E.Space 的选手中,时间靠后的那份提交最早的提交记录的拥有者。
【就差亿点】赛时在“度日如年”一题中得到 42 分,且在 4.1 23:59 前将提交记录链接附带奖项名称发送给 xsmyy_15row 的选手中,提交时间距离下一个可以获得满分的时间最长的提交记录的拥有者。可以获得满分的时间以 Special Judge 的 checker.cpp 实现为准。
【留了一手】赛时在“您看我这,求求你给我几分吧?”一题中得到 99 分,且在 4.1 23:59 前将提交记录链接附带奖项名称发送给 xsmyy_15row 的选手中,提交时间最早的提交记录的拥有者。
【Code Golf】赛时通过“幸运数字”一题,且在 4.1 23:59 前将提交记录链接附带奖项名称发送给 cff_0102 的选手中,代码长度最短的提交记录的拥有者。
【完美避开】赛时在“填词游戏”一题中得到 Unaccepted 0 分(不包括 CE 与 Waiting、Judging),且在 4.1 23:59 前将提交记录链接附带奖项名称发送给 BpbjsGreen 的选手中,提交时间最早的提交记录的拥有者。
随便看看
- 2025-06-13 03:24:39世界跆拳道俱乐部比赛:激情对决与全球顶尖选手的荣耀之战
- 2025-05-01 23:35:002017骑士球员薪资揭秘:豪华阵容背后的巨额投资
- 2026-01-26 22:45:40北京国安主场遭遇逆转:青岛海牛4-2大胜,法比奥成赛季最佳射手!
- 2025-11-20 20:46:47世界杯秘鲁队名单公布:身高数据揭示球队实力与潜力
- 2026-07-28 10:41:27队报评15年百大球星:MSN前三
- 2025-05-20 08:44:08世界杯焦点战:巴西vs哥斯达黎加,桑巴军团能否延续强势?
- 2025-09-30 09:39:102025年06月20日中国女篮VS日本女篮比赛录像
- 2025-05-16 19:31:22世界杯期间如何不错过火箭队的比赛直播?
- 2025-07-07 18:57:53弗赖堡亚洲球员闪耀德甲:揭秘他们的成长之路与世界杯梦想
- 2025-09-22 17:05:38东非传奇萨马塔加盟法甲勒阿弗尔,书写坦桑尼亚足球新篇章
