本题是 UNR Day1 提答。orz 居然是一道 20 个点的手玩提答。
然而渣渣 dram 正在漫长地手玩。
这根本就不是算法题好吗?
听说这题暴搜可以满分 orz immortalCO
最新进展
我们机房刚刚开黑把原版游戏 20 关全过了
大致表述方法
注意:此处会经常改
1-9
果冻和俄罗斯方块。#
墙<>^v
箭头==>
“然后就是”[%d]
步骤序号
Case 1: 5
# 1 #
| |
# #-# #
| |
# 3 1 2 #
| |
#-# 2 # 3 #-#-#
| | | | | |
#-#-#-#-#-#-#-#-#
首先第 3 行那个 3 好讨厌,果断和右面的 3 合并,然后发现需要把第 3 行 2 推到右面和底下的合并,于是当推到那个平台下面的时候合并竖着的 1
v<<<1
v
v #-# ==> < 1
v < |
1 2 < 1 2
然后推着这个小车向左到头
5 2 1
4 3 1
8 3 0
7 3 0
7 5 0
6 5 0
6 3 0
5 3 0
4 3 0
(插播奇葩:发现控制好终端窗口大小然后 less report.out
有奇效!)
Case 2: 5
# 2 2 #
| |
# 1 1 1 #
| |
#-# # # #-#
| | | | | |
#-#-#-#-#-#-#-#-#
这里我们要用到一个重要的方法:这个小车是不会从宽度为 1 的洞里掉下去的
1-1 >>> >>> >>>
# # # # #
所以我们先把 (4,4) 左移到那个洞里填上,然后成功形成小车一枚。
2 2
1-1 >>> 1 1-1-1
# 2 # # # ==> # 2 # # #
然后把 2 送回去和洞里的 2 相会
Case 3: 5
# 3 2 # 2 #
| | |
#-#-# #-# 1 #-# #
| |
# 3 #
| |
#-#-# #-# 1 #-#-#-#-#
| | | | | | | | | |
#-#-#-#-#-#-#-#-#-#-#-#
注意到这里有个门 orz
想想玩游戏的时候怎么弄的,哦,得让一个人卡着这个门
先让 3 掉到洞里,然后 2 从左边过来卡着门
正好左边有两个格子的空隙,正好放一个 2-2
。
v 门在这个位置
2 3
==> 2 3
==> 2 2 3 // 第 5 行的那个 2
==> << 2-2 3
然后与左边洞里的 3 相会
Case 4: 5
# 1 #
| |
# 2 #
| |
# # #
| |
# 2 1 #
| | | |
# 2 1 2 #
| |
#-# # #-#
| | | | |
#-#-#-# #-#-#-#-#-#
| | | | | | | | | |
#-#-#-#-#-#-#-#-#-#-#
性质:这个小车可以带着 2 往前走不掉
2
1-1
于是我们用平台上的那个 2 和右面的 2 得到一个 2-2
小车。
# #
| |
# 1 #
| |
# # #
| |
# 2 1 #
| | | |
# 2 1 #
| |
#-# # 2-2 #-#
| | | | |
#-#-#-# #-#-#-#-#-#
| | | | | | | | | |
#-#-#-#-#-#-#-#-#-#-#
然后呢?似乎左边有一个坑,那就用平台上的 1 填上。
等等左边有个 $\begin{matrix}1\\|\\1\end{matrix}$,把它扔到最右面卡在那里好了
(我已经不耐烦到开始滥用数学公式了)
# #
| |
# 1 #
| |
# # #
| |
# 2 1 #
| | | |
# 2 1 #
| |
#-# # 2-2 #-#
| | | | |
#-#-#-# #-#-#-#-#-#
| | | | | | | | | |
#-#-#-#-#-#-#-#-#-#-#
然后运送 1 到那个一行高的洞里,把 $\begin{matrix}2\\|\\2\end{matrix}$ 卡到那个两行高的洞里。注意不能和 2-2
粘上否则就没法营救 $\begin{matrix}1\\|\\1\end{matrix}$ 了。
# #
| |
# #
| |
# # #
| |
# 1 #
| | |
# 1 #
| |
#-# 1 # 2 2-2 #-#
| | | | | |
#-#-#-# 2 #-#-#-#-#-#
| | | | | | | | | |
#-#-#-#-#-#-#-#-#-#-#
然后把 $\begin{matrix}1\\|\\1\end{matrix}$ 营救回去就好了。
Case 5: 5
# 1 2 2-2 >>> >>> v #
| v |
#-#-# #-# #-# v #
| v |
# 1 2 v #
| |
#-#-#-# # #-#
| | | | | | |
#-#-#-#-# # #-#-#
| | | | | | | | |
#-#-#-#-#-#-#-#-#-#-#-#
上面 2-2
似乎只能从右面下去,还得有人接驾
看到了两个非常大的洞,显然是得有人踩坑了
那就造一个 2-2
填进横的那个洞里,然后 $\begin{matrix}1\\|\\1\end{matrix}$ 进到 2x2 的那个洞里
# 2-2 #
| |
#-#-# #-# #-# #
| |
# #
| |
#-#-#-# 2-2 # 1 #-#
| | | | | | | |
#-#-#-#-# # 1 #-#-#
| | | | | | | | |
#-#-#-#-#-#-#-#-#-#-#-#
所以好像还得把上面 2-2
接过来,而 $\begin{matrix}1\\|\\1\end{matrix}$ 向右走一步就形成了两个宽度为 1 的坑。这很好。
# 2-2 >>> v #
| v |
#-#-# #-# #-# v #
| |
# <<< <<< <<< #
| |
#-#-#-# 2-2 # 1 #-#
| | | | | | | |
#-#-#-#-# # 1 #-#-#
| | | | | | | | |
#-#-#-#-#-#-#-#-#-#-#-#
Case 6: 5
#-#-#-# 3 #
| |
# #-# #
| |
# 1 2 #
| |
# # # # 3 #
| |
# # 2 #
| | |
# 1 #-#-#-#
| | | | |
# #-#-#-#-#-#-#-#
| | | | | | | | |
#-#-#-#-#-#-#-#-#-#-#
如果这样不就可以把第 6 行的那个可怜的 2 送到右面了么?
2
# 3 #
1 #
1 #
#-#-#-#-#
方法如下:首先先让 2 过去两格,然后把 $\begin{matrix}1\\|\\1\end{matrix}$ 挪到右边去,然后 2 顺着台阶下来
[1]
2 >>> v #
v [3] |
# 3 # v #
>>>>v |
1 # v 2 #
| | |
1 >>> #-#-#-#
[2] | | | |
#-#-#-#-#-#-#-#
而形成 $\begin{matrix}1\\|\\1\end{matrix}$ 的方法无非是让左边那个 1 掉下来
# 1>v
# # v #
# 1 >>>
# 1 ==> 1 >>>
# ? # ? #
#-#-#-# #-#
而 ?
显然取 3,因为没有别的果冻了
而正好卡在 2 右面的洞里的那个 3 显然来自第 8 行
我们让长的平台上的那个 1 接一下第 5 行的 3。
[2]
# # v<3 #
v |
<<< # 2 #
| |
1>> #-#-#-#
[1]
最后剩下两个 3 让它们在一起就好了
Case 7: 5
# 1 #
| |
# 2 2 #-#
| |
# # 1-1 #
| |
# # #
| | |
#-1 2-# # # #
| | | | | | |
# # #-# # # #
| | | | | | |
#-#-#-#-#-#-#-#-#-#-#-#
出现了喜闻乐见的粘在墙上的方块
大家既然都看到这里了想必已经比较熟悉各种简单构造了
为了通过中间那个巨大的宽度为 2 的坑,我们需要一个 1-1-1
# 1 #
| [3] |
# 2>v #-#
| v [1] |
# # v <<< 2 #
| |
# <<< 1-1 # #
[2]
==>
# 1 #
# #-#
# # 2-2 #
# 1-1 # #
==>
# 1 #
# #-#
# # 2-2 #
# 1-1 # #
==>
# #
# #-#
# # 2-2 #
# 1-1-1 # #
然后推过去就好了
Case 8: 5
# 1 2 #
| |
# # # #
| | | |
# 2 1 #
| |
# 1 2 #
| |
#-# 1 2 #-#
| | | |
#-#-# #-#-#
| | | | | |
#-#-#-#-#-#-#-#-#-#-#-#
难炸了!
首先给你们看看最终局面
# #
| |
# # # #
| | | |
# 2 1 #
| | | |
# 2 1 #
| | | |
#-# 2-2 1 #-#
| | | | |
#-#-# 1 #-#-#
| | | | | |
#-#-#-#-#-#-#-#-#-#-#-#
这个 2 什么鬼啊
玩一玩就会发现一边构造出来了,另一边就傻眼了。关键在这一串 1
用一个 1 从左面接过来一个 2-2
,当作转运平台,这个比较简单
然后从左面开始
# 1 2 #
| |
# # # #
| | | |
# 2 1 #
| |
# 1 >>> #
| >>> |
#-# 2-2 >>> #-#
| | >>> | |
#-#-# 1 >>> #-#-#
| | | | | |
#-#-#-#-#-#-#-#-#-#-#-#
这里比较关键,是成功把 1 和 2 反过来的要点之处
这里就是需要构造一个 $\begin{matrix}2&&1\\|&&\\2&-&2\end{matrix}$,然后把 L 型推过去,就能高高兴兴地造一个 $\begin{matrix}1\\|\\1\\|\\1\end{matrix}$
# 1 v<2 #
| v |
# # v # #
| | v | |
# 2 v<< 1 #
| v |
# v 1 #
| |
#-# 2-2 #-#
| | | |
#-#-# 1 #-#-#
| | | | | |
#-#-#-#-#-#-#-#-#-#-#-#
==>
# 1 #
| |
# # # #
| | | |
# 2 1 #
| |
# < 2 1 #
| < | |
#-# < 2-2 #-#
| | | |
#-#-# 1 #-#-#
| | | | | |
#-#-#-#-#-#-#-#-#-#-#-#
==>
# 1 #
| |
# # # #
| | | |
# 2 1 #
| | |
# 2 1 #
| | |
#-# 2-2 #-#
| | | |
#-#-# 1 #-#-#
| | | | | |
#-#-#-#-#-#-#-#-#-#-#-#
然后把三个 1 连在一起就行了
Case 9: 5
# 2 #
| |
# # 1 #
| |
# 2 9-9 #
| |
#-# 1 # # #-#
| | | | | | |
#-#-#-#-#-#-#-#-#-#-#-#
思路就是把 9-9
推到最左边的坑里面把最左边的 2 营救出来,然后在中间的坑里弄出一个 2-2
# v<<<< 2 #
| v |
# # v 1 #
| v |
# 2 >>>>>>>>v v 9-9 #
| v v |
#-#(9-9)1 # v v # #-#
| | | | | | |
#-#-#-#-#-#-#-#-#-#-#-#
前面把 2 推下来的时候记得常数优化。我现在发现的是,两个在推动方向连续的块,推前面的不如推后面的,有特殊要求除外
# #
| |
# # 1 #
| |
# 2 9-9 #
| |
#-# 1 # 2 # #-#
| | | | | | |
#-#-#-#-#-#-#-#-#-#-#-#
然后就好办了,把 1 先卡后面,9-9
过去
# #
| |
# # #
| |
# 2 1 #
| |
#-# 9-9 1 # 2 # #-#
| | | | | | |
#-#-#-#-#-#-#-#-#-#-#-#
2 过来,1 过去,完事
Case 10: 5
# 2 1 #
| |
# 9-9 9 #
| |
# # # #-#-#-#
| |
# #
| |
#-# # #
| |
# # 1-#
| | |
# # 2-#-#
| | | |
# #-#-#
| | | |
#-#-#-#-#-#-#-#-#-#-#
我们需要转运 1 过去,我们考虑造一个形如 $\begin{matrix} 1&&\\ &&\\ 9&-&9\\ &&\\ 2&&\\ &&\\ 9&&\\ \end{matrix}$,卡在中间那个空那里
这个嘛,左上角有点尴尬的说
我无意中发现这个 9-9
可以这么玩
# 2 1 #
| |
# <9-9 9 #
| |
# # # #-#-#-#
| |
# #
| |
#-# # #
==>
# #
| |
# 1 9 #
| |
# 2 # # #-#-#-#
| |
# 9-9 #
| |
#-# # #
这个世界没有摩擦力。
在下一行,为了防止掉落我们先把 9 垫在下面
# 2 #
|
# 9-9>
|
#-# #
|
# 9 <<<<<<<<< 这个是垫的那个 9
==>
# #
|
# 2
|
#-# 9-9 #
|
# 9
然后把那些东西全都移下来变成这样
#-# # #
| |
# 9-9 # 1-#
| | |
# # 2 2-#-#
| | | |
# 9 #-#-#
| | | |
#-#-#-#-#-#-#-#-#-#-#
把上面的 1 弄下来就目标达成了!
最后有个这个
# # 2 2-#-#
| | | |
# 9 #-#-#
| | | |
#-#-#-#-#-#-#-#-#-#-#
但是不要忘了我们还有一个 9-9
呢
# # 2 2-#-#
| | | |
# 9-9>>>> 9 #-#-#
| | | |
#-#-#-#-#-#-#-#-#-#-#
Case 11: 5
# 1-9-9-1 1 #
| |
# # #-#
| |
# 1 #
| |
# 9-9 #-#
| |
#-# #
| |
# 1 #
| |
# # # 1-#
| | | | |
# #-#-#-# #-#-#
| | | | | | | |
#-#-#-#-#-#-#-#-#-#
1-9-9-1
是个什么鬼啊,不过既然还有四个 1,那就只好构造一个
\begin{matrix} 1&-&9&-&9&-&1\\ |&&&&&&|\\ 1&-&1&-&1&-&1\\ \end{matrix}
而且应该放在右下角
问题是那个 1-1-1-1
有点难办啊
右上角有两个 1,考虑 $\begin{matrix}
1&-&1\\
&&\\
9&-&9\\
\end{matrix}$,然后把 9-9
移开放在右下方宽度为 3 的坑的右侧
先放到这个位置
# 1 #
| |
# # #-#
| |
# 1 #
| |
# 9-9 #-#
| |
#-# 1-9-9-1 #
| |
# 1 #
| |
# # # 1-#
| | | | |
# #-#-#-# #-#-#
| | | | | | | |
#-#-#-#-#-#-#-#-#-#
然后把那个构造出来
# #
| |
# # #-#
| |
# 1-1 #
| |
# 9-9 #-#
| |
#-# 1-9-9-1 #
| |
# 1 #
| |
# # # 1-#
| | | | |
# #-#-#-# #-#-#
| | | | | | | |
#-#-#-#-#-#-#-#-#-#
放掉
# #
| |
# # #-#
| |
# #
| |
# 9-9 #-#
| |
#-# 1-9-9-1 #
| |
# 1 #
| |
# # # 1-1-1-#
| | | | |
# #-#-#-# #-#-#
| | | | | | | |
#-#-#-#-#-#-#-#-#-#
然后把 1-9-9-1
一直往右推就行了,它会把那个 1 带上变成 $\begin{matrix}
1&-&9&-&9&-&1\\
|&&&&&&\\
1&&&&&&
\end{matrix}$
Case 12: 5
#-#-# 1-1 #-#-#
| | | | | |
#-#-# # #-#-#
| | | |
#-# 1 1-1 1 #-#
| | | |
#-#-# # #-#-#
| | |
# 2 2-#
| | |
#-# #-#
| |
# #
| |
# #
| |
# #-# #
| | | |
#-#-#-#-#-#-#-#-#-#
如果你一开始就想把所有 1 集结起来你就输了
最后是要一个
\begin{matrix} 1&-&1&&\\ &&|&&\\ &&1&&\\ &&|&&\\ &&1&-&1 \end{matrix}
(注意到少一个 1)
然后最后粘上一个 1
\begin{matrix} 1&-&1&&\\ &&|&&\\ &&1&&\\ &&|&&\\ &&1&-&1\\ &&&&|\\ &&&&1 \end{matrix}
戳在右下角地上防止掉落。
#-#-# #-#-#
| | | | | |
#-#-# # #-#-#
| | | |
#-# 1 #-#
| | | |
#-#-# # #-#-#
| | |
# 2 2-#
| | |
#-# 1-1 #-#
| | |
# 1 #
| | |
# 1-1 #
| |
# #-# #
| | | |
#-#-#-#-#-#-#-#-#-#
然后运过来
#-#-# #-#-#
| | | | | |
#-#-# # #-#-#
| | | |
#-# v<1 #-#
| | v | |
#-#-# # v #-#-#
| v | |
# 2 v 2-#
| v | |
#-# 1-1 v #-#
| | v |
# 1 v #
| | v |
# 1-1 v #
| v |
# #-# v #
| | | v |
#-#-#-#-#-#-#-#-#-#
往右推就行了
Case 13: 5
# 2 1 #
| |
# 1 3 #
| |
# 2 1 #
| |
# 3 2 #
| |
#-#-#-#-#-#
果冻这么少,直接人脑暴搜。
或许可以观察一下,发现两个斜向的相同果冻
# 2 1 #
| |
# 1 3 #
| \ |
# 2 1 #
| \ |
# 3 2 #
| |
#-#-#-#-#-#
所以考虑拿走左下 3
记得常数优化,人脑暴搜
Case 16: 1
交空文件得 1 分