题解:P14614 [2019 KAIST RUN Fall] Bigger Sokoban 40k
题目
P14614 [2019 KAIST RUN Fall] Bigger Sokoban 40k
题意
其实题目说得很清楚了,我再写一遍。
设置一个更大推箱子网络,要求满足:
- 至少 40,000 步才能解决。
- 有且仅有一个箱子及目标位置。
- 长和宽以及他们的和要大于等于一,但不能超过一百。
- 玩家、箱子和目标位置必须互不重叠。
- 尺寸为
2\times2 。分析
神秘紫色构造题一枚。
观察题目给的样例:
5 6
....SS
....SS
.#BB#.
..BB.P
......
由于长、宽有要求,故图要小。
但是步数要求很大,我们需要不断绕圈子来推箱子。
箱子和指定地点应该放在两个角,从而使距离足够远。
我们把尽可能多的绕很多圈子的形状拼接起来即可。如下面这样的图案:
.....#....
.##P.##...
.#.BB....#
.#.BB....#
.#....##..
.######...
或者这样的:
........#..
.##P.##..#.
.#.BB....#.
.#.BB....#.
.#....#..#.
.######..#.
.....#....#
.....######
代码
#include<bits/stdc++.h>
using namespace std;
int main()
{
cout<<51<<" "<<47<<endl;
printf(
".....##########################################\n"
".##P.##...#.............#...#.............#...#\n"
".#.BB.....#.................#.................#\n"
".#.BB.....#.................#.................#\n"
".#....#...##..#.........#...##..#.........#...#\n"
".######..###..###########..###..###########..##\n"
".#...##..##...#....#...##..##...#....#...##..##\n"
".#........#........#........#........#........#\n"
".#........#........#........#........#........#\n"
".#...#....#...##..##...#....#...##..##...#....#\n"
".##..###########..###..###########..###..######\n"
".##..##...#....#...##..##...#....#...##..##...#\n"
".#........#........#........#........#........#\n"
".#........#........#........#........#........#\n"
".#....#...##..##...#....#...##..##...#....#...#\n"
".######..###..###########..###..###########..##\n"
".#...##..##...#....#...##..##...#....#...##..##\n"
".#........#........#........#........#........#\n"
".#........#........#........#........#........#\n"
".#...#....#...##..##...#....#...##..##...#....#\n"
".##..###########..###..###########..###..######\n"
".##..##...#....#...##..##...#....#...##..##...#\n"
".#........#........#........#........#........#\n"
".#........#........#........#........#........#\n"
".#....#...##..##...#....#...##..##...#....#...#\n"
".######..###..###########..###..###########..##\n"
".#...##..##...#....#...##..##...#....#...##..##\n"
".#........#........#........#........#........#\n"
".#........#........#........#........#........#\n"
".#...#....#...##..##...#....#...##..##...#....#\n"
".##..###########..###..###########..###..######\n"
".##..##...#....#...##..##...#....#...##..##...#\n"
".#........#........#........#........#........#\n"
".#........#........#........#........#........#\n"
".#....#...##..##...#....#...##..##...#....#...#\n"
".######..###..###########..###..###########..##\n"
".#...##..##...#....#...##..##...#....#...##..##\n"
".#........#........#........#........#........#\n"
".#........#........#........#........#........#\n"
".#...#....#...##..##...#....#...##..##...#....#\n"
".##..###########..###..###########..###..######\n"
".##..##...#....#...##..##...#....#...##..##...#\n"
".#........#........#........#........#........#\n"
".#........#........#........#........#........#\n"
".#....#...##..##...#....#...##..##...#....#...#\n"
".######..###...##########..###...##########..##\n"
".#...#.........#...#...#.........#...#...#....#\n"
".#...#.........#...#...#.........#...#...#SS..#\n"
".#...#....##...#...#...#....##...#...#...#SS..#\n"
".############################################.#\n"
"..............................................#"
);
return 0;
}