Gym 101981K - Kangaroo Puzzle - [玄学][2018-2019 ACM-ICPC Asia Nanjing Regional Contest Problem K]
题目链接:http://codeforces.com/gym/101981/problem/K
Your friend has made a computer video game called “Kangaroo Puzzle” and wants you to give it a try
for him. As the name of this game indicates, there are some (at least 2) kangaroos stranded in a puzzle
and the player’s goal is to control them to gather. As long as all the kangaroos in the puzzle get together,
they can escape the puzzle by the miraculous power of kangaroos.
The puzzle is a n × m grid consisting of nm cells. There are walls in some cells and the kangaroos cannot
enter these cells. The other cells are empty. The kangaroos can move in the following direction: up, down,
left and right. It is guaranteed that one kangaroo can move from an empty cell to any other. It is also
guaranteed that there is no cycle in the puzzle — that is, it’s impossible that one kangaroo can move from
an empty cell, pass by several distinct empty cells, and then back to the original cell.
There is exactly one kangaroo in every empty cell at the beginning. You can control the kangaroos by
pressing the button U, D, L, R on your keyboard. The kangaroos will move simultaneously according to the
button you press. For instance, if you press the button U, a kangaroo would move to the upper cell if it
exists and is empty; otherwise, the kangaroo will stay still. You can press the buttons for at most 50000
times. If there are still two kangaroos standing in different cells after 50000 steps, you will lose the game.
Input
The first line contains two integers, n and m (1 ≤ n, m ≤ 20), the height and the width of the puzzle,
respectively. Each of the next n lines contains a (0,1)-string of length m, representing the puzzle. If the
j-th character of the i+1-th line is 1, then the cell at the i-th row and the j-th column is empty; otherwise
(i.e. it is 0), the corresponding cell is blocked and cannot be entered.
Output
Print a string consisting of U, D, L, R, such that all kangaroos will get together after pressing the buttons
in the order of this string. The length of the string should not exceed 50000. There are many possible
valid answers, so just print any of them.
Examples
standard input
4 4
1111
1001
1001
1110
standard output
LLUUURRRDD
standard input
2 15
111111111111111
101010101010101
standard output
ULLLLLLLLLLLLLL
题意:
给出 $n \times m(1 \le n,m \le 20)$ 的迷宫,里面每格 $0$ 代表障碍物,$1$ 代表袋鼠。
现在你有 $L,R,U,D$ 四种操作,可以使得迷宫内所有的袋鼠统一往左/右/上/下移动一格,袋鼠可以重叠,袋鼠遇到障碍物或者边界则不会移动。
现在要求你输出一个长度不超过 $5e4$ 的包含 $L,R,U,D$ 的操作序列,使得最后袋鼠全部集中在某一格上。
题解:
因为迷宫的规格很小,所以 $50000$ 次操作,每次操作都随机挑选四个方向中的一个走即可。最后袋鼠全部走到一个格子的概率是很大的。
AC代码:
#include<bits/stdc++.h> using namespace std; int n,m; char tmp[23],d[4]={'L','R','U','D'}; int main() { srand(6510561); scanf("%d%d",&n,&m); for(int i=1;i<=n;i++) scanf("%s",tmp); for(int i=1;i<=50000;i++) printf("%c",d[rand()%4]); }