分析:
显而易见,这是一道构造题
题目要求构造出一种地图方案,使得推箱子的步数大于 \(40k\) ,然而 \(N+M\) 最大只有可怜的 \(100\) ,那么我们就需要开始思考了
稍微分析一下,如果整张图的格子不够走,那么必须要让人能够巨多的重复步数才能达到目标
观察样例:
....SS
....SS
.#BB#.
..BB.P
......
我们想到:箱子的大小是 \(2×2\) ,而人是 \(1×1\) ,那么一定有只有人能走而箱子走不了的情况
显然,一种思路是让人不断地走圈子去走到一个能推动箱子的地方,从而去推动箱子
有了这个思路后答案就很显然了:我们可以构造出一个由很多小房间的地图,这些小房间只有两个口,一个长 \(2\),让箱子正好能出去,一个长 \(1\),让人能走但箱子走不了,从而达到人绕远路去推箱子的目的
Code
#include <bits/stdc++.h>
using namespace std;
int main(){
cout <<"49 51"<<endl;
cout<< "......#....#....#....#....#....#....#....#....#...."<<endl;
cout<< ".#.#BBP..#.#.#...............#.#.#...............#."<<endl;
cout<< ".#..BB.....#...................#..................."<<endl;
cout<< ".#....#....#....#....#....#....#....#....#....#...."<<endl;
cout<< ".#######..###..#############..###..#############..#"<<endl;
cout<< ".#....#....#....#....#....#....#....#....#....#...."<<endl;
cout<< ".#.#.......#.......#.#.#.......#.......#.#.#......."<<endl;
cout<< ".#.......#.#.#.......#.......#.#.#.......#.......#."<<endl;
cout<< ".#....#....#....#....#....#....#....#....#....#...."<<endl;
cout<< ".##..#############..###..#############..###..######"<<endl;
cout<< ".#....#....#....#....#....#....#....#....#....#...."<<endl;
cout<< ".#.......#.#.#.......#.......#.#.#.......#.......#."<<endl;
cout<< ".#.#.......#.......#.#.#.......#.......#.#.#......."<<endl;
cout<< ".#....#....#....#....#....#....#....#....#....#...."<<endl;
cout<< ".#######..###..#############..###..#############..#"<<endl;
cout<< ".#....#....#....#....#....#....#....#....#....#...."<<endl;
cout<< ".#.#.......#.......#.#.#.......#.......#.#.#......."<<endl;
cout<< ".#.......#.#.#.......#.......#.#.#.......#.......#."<<endl;
cout<< ".#....#....#....#....#....#....#....#....#....#...."<<endl;
cout<< ".##..#############..###..#############..###..######"<<endl;
cout<< ".#....#....#....#....#....#....#....#....#....#...."<<endl;
cout<< ".#...................#...................#.......#."<<endl;
cout<< ".#.#...............#.#.#...............#.#.#......."<<endl;
cout<< ".#....#....#....#....#....#....#....#....#....#...."<<endl;
cout<< ".###############################################..#"<<endl;
cout<< ".#....#....#....#....#....#....#....#....#....#...."<<endl;
cout<< ".#.#...............#.#.#...............#.#.#......."<<endl;
cout<< ".#...................#...................#.......#."<<endl;
cout<< ".#....#....#....#....#....#....#....#....#....#...."<<endl;
cout<< ".##..#############..###..#############..###..######"<<endl;
cout<< ".#....#....#....#....#....#....#....#....#....#...."<<endl;
cout<< ".#.......#.#.#.......#.......#.#.#.......#.......#."<<endl;
cout<< ".#.#.......#.......#.#.#.......#.......#.#.#......."<<endl;
cout<< ".#....#....#....#....#....#....#....#....#....#...."<<endl;
cout<< ".#######..###..#############..###..#############..#"<<endl;
cout<< ".#....#....#....#....#....#....#....#....#....#...."<<endl;
cout<< ".#.#.......#.......#.#.#.......#.......#.#.#......."<<endl;
cout<< ".#.......#.#.#.......#.......#.#.#.......#.......#."<<endl;
cout<< ".#....#....#....#....#....#....#....#....#....#...."<<endl;
cout<< ".##..#############..###..#############..###..######"<<endl;
cout<< ".#....#....#....#....#....#....#....#....#....#...."<<endl;
cout<< ".#.......#.#.#.......#.......#.#.#.......#.......#."<<endl;
cout<< ".#.#.......#.......#.#.#.......#.......#.#.#......."<<endl;
cout<< ".#....#....#....#....#....#....#....#....#....#...."<<endl;
cout<< ".#######..###..#############..###..#############..#"<<endl;
cout<< ".#SS..#....#....#....#....#....#....#....#....#...."<<endl;
cout<< ".#SS.......#...................#..................."<<endl;
cout<< ".#.......#.#.#...............#.#.#...............#."<<endl;
cout<< "...####....#....#....#....#....#....#....#....#....";
return 0;
}
这图构造的我真痛苦啊!
"——敬不完美的明天"
"——敬不再沉默的历史,热烈而勇敢的奔赴,和通往所以未来的旅途"
"——敬盛会的邀请函,所有的谎言,和唯一的真相"
"——敬坚忍的岁月,每个悲伤的夜晚,和终将到来的黎明"
"——敬我的过去,现在,未来...和年少时至死不渝的梦"
时钟的指针转过一圈又一圈,但每一天的开始和结束,永远落在「前进」的十二点