CF1250M SmartGarden

题目描述

Berland Gardeners United Inc. 雇佣你参与名为“SmartGarden”的项目。该项目的主要功能是实现花园的自动浇水。 形式化地,花园可以表示为一个 $n \times n$ 的方阵,行编号为 $1$ 到 $n$(从上到下),列编号为 $1$ 到 $n$(从左到右)。花园的每个格子中要么有植物,要么有石板。 已知石板位于矩阵的主对角线上,以及所有在主对角线下方、且与主对角线至少有一条边相邻的格子。花园中其余的格子都种有植物。 ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF1250M/920cff7b857d3b33730690cd330ac3e3f7380869.png) 如上图所示为 $n=5$ 时的花园示例。 在项目实施过程中,你设计了一个智能机器人,能够接收一系列指令,并依次执行。每条指令包含: - 一组水平线(即矩阵中的若干行); - 一组垂直线(即矩阵中的若干列)。 每执行一条指令,机器人只会给指定的行和指定的列的交叉点处的格子浇水。也就是说,如果你指定了 $r$ 行和 $c$ 列,那么恰好会有 $r \times c$ 个格子被浇水。 在给客户的演示中,你曾让机器人一次性给整个花园浇水。为此,你准备了一条包含所有 $n$ 行和所有 $n$ 列的指令。 不幸的是,在演示前 5 小时,你得知 Berland Gardeners United Inc. 的 CEO 也将出席演示。更糟糕的是,他很可能会站在某块石板上! 现在你需要为机器人设计一组指令,使其能够给所有植物浇水,并且不会给任何有石板的格子浇水。由于“SmartGarden”还处于测试阶段,指令总数不得超过 $50$ 条。 请编写程序,对于给定的花园大小 $n$,输出不超过 $50$ 条指令,使机器人能够给所有植物浇水且不会浇到石板。允许对同一株植物多次浇水。

输入格式

输入仅一行,包含一个整数 $n$($2 \le n \le 5000$),表示花园的大小。

输出格式

第一行输出机器人指令的总数 $k$($1 \le k \le 50$)。接下来的 $2 \times k$ 行描述所有指令。每条指令用两行描述。第一行为该指令涉及的行,第二行为该指令涉及的列。每行的格式如下: - 首先是一个整数 $x$,表示该列表中元素的个数; - 接下来是 $x$ 个互不相同的整数,范围均为 $1$ 到 $n$,分别表示选中的行(第一行)和选中的列(第二行)。 如果存在多种方案,输出任意一种均可。

说明/提示

由 ChatGPT 4.1 翻译