QOJ.ac

QOJ

Time Limit: 1 s Memory Limit: 256 MB Total points: 100

#6418. 啊,又是昨日重现

Statistics

2018 年,由南京航空航天大学(NUAA)主办的国际大学生程序设计竞赛(ICPC)区域赛在时隔多年后再次在南京举行。比赛共有超过 400 支队伍参加,来自清华大学的 Power of Two 队获得了冠军。

两年过去了,在 2018 年和 2019 年取得巨大成功之后,NUAA 继续在 2020 年举办 ICPC 南京区域赛。虽然由于疫情原因我们这次无法在南京相聚,但我们仍应感谢所有为本次比赛付出辛勤工作的教职工和志愿者。感谢你们为本次比赛做出的巨大贡献!

在 2018 年的比赛中,K 题《袋鼠拼图》(Kangaroo Puzzle)要求参赛者为游戏构建一个操作序列。让我们先回顾一下该题的内容:

该拼图是一个 $n$ 行 $m$ 列的网格($1 \le n, m \le 20$),其中有一些(至少 2 个)袋鼠站在拼图中。玩家的目标是控制它们汇合到一起。拼图中某些格子有墙,袋鼠不能进入有墙的格子。其余格子为空地。袋鼠可以从一个空地向四个方向(上、下、左、右)移动到相邻的空地。保证袋鼠可以通过相邻的空地从任意一个空地到达其他任何空地。同时保证拼图中不存在环——也就是说,袋鼠不可能从一个空地出发,经过若干不同的空地,最后回到起始的空地。

初始时,每个空地中恰好有一只袋鼠。玩家可以通过键盘上的 U、D、L、R 键来控制袋鼠。袋鼠会根据你按下的按键同时移动。例如,如果你按下 R 键,如果袋鼠右侧存在格子且为空地,它会向右移动一格;如果右侧不存在格子或不是空地,它将保持不动。

在本题中,参赛者需要构建一个长度不超过 $5 \times 10^4$ 的操作序列,仅由 U、D、L、R 组成。如果在按顺序执行这些操作后,仍有两只袋鼠站在不同的格子里,参赛者将获得“Wrong Answer”判罚。

我们亲爱的朋友 Kotori 也参加了那场比赛,并提交了一份随机算法的代码。令她惊讶的是,这个简单的解法被判定为正确答案。我们现在展示她的解法如下:

#include <bits/stdc++.h>
char s[5] = 'UDLR';
using namespace std;
int main()
{
    srand(time(NULL));
    for (int i = 1; i <= 50000; i++) putchar(s[rand() % 4]);
    return 0;
}

对于不熟悉 C 和 C++ 的参赛者:上述代码将输出一个长度为 $5 \times 10^4$ 的随机字符串,仅包含字符 'U'、'D'、'L' 和 'R',其中每个字符在字符串的每个位置出现的概率相等。

Kotori 怀疑这个问题的实际情况可能并没有那么简单,所以现在,在 2020 年 ICPC 南京区域赛中,你需要构造一组输入数据来破解她的解法。由于随机性的存在,你的输入数据只需要满足至少 25% 的成功破解率。形式化地说,我们准备了 500 个根据 Kotori 的代码随机生成的字符串,并将它们作为控制序列来测试你的答案。为了使你的答案被接受,在将你的答案作为地图并执行整个控制序列后,必须至少有 125 次结果显示仍有袋鼠在不同的格子里。

注意,你的输入数据必须是完全合法的。也就是说:

  • 你答案中的地图大小不得超过 $20 \times 20$;
  • 你的答案应包含至少两个空地;
  • 你答案中的所有空地都应能从任意一个空地出发到达;
  • 不允许存在由空地组成的环。

输入格式

本题没有输入。一切由你决定!

输出格式

你首先需要输出一行,包含两个空格分隔的整数 $n$ 和 $m$($1 \le n, m \le 20$),表示你答案中地图的行数和列数。

然后输出 $n$ 行,第 $i$ 行包含一个长度为 $m$ 的二进制字符串 $s_{i,1}s_{i,2} \dots s_{i,m}$($s_{i,j} \in \{'0', '1'\}$)。如果 $s_{i,j} = '1'$,则表示第 $i$ 行第 $j$ 列的格子为空地;否则,该格子包含墙,无法进入。

再次提醒,你的答案只需要达到至少 25% 的成功破解率。没那么难,对吧?

样例

输入 1

(无输入)

输出 1

3 4
1111
1010
1100

说明

我们提供的样例输出(显然)是不正确的。它仅用于展示输出格式。这是一个 $3 \times 4$ 的地图,有 4 面墙,因此初始时在空地中会有 8 只袋鼠。

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.