3979: 【NOIP2022赛前集训】无限水(water)
内存限制:512 MB
时间限制:1.000 S
评测方式:文本比较
命题人:
提交:33
解决:10
题目描述
water.in/out/cpp
## 题目描述
1s,512M。
给定一个 $N\times M$ 的矩阵,你需要花费最少桶水使得整个矩阵被填满水。
根据 $\texttt{Minecraft}$ 的世界规则,如果当前格子为空,但与之相邻的格子中有至少 $2$ 个格子有水,则当前格子自动填充一格水。
一直填充下去直到不存在一个空格子有至少 $2$ 个相邻的格子有水。
**形式化题意**:给定一个 $N\times M$ 的矩阵,初始每个格子都是 $0$,你需要将一些格子变成 $1$。之后每一秒,如果存在一个为 $0$ 的格子,与它相邻的最多 $4$ 个格子中,有大于等于两个格子为 $1$,则该格子也会变成 $1$。问初始时至少需要将多少个格子变为 $1$,才能使得整个矩阵最后全部为 $1$。
**注意:不需要使时间最短,如果有多个方案,则输出任意一个**。
## 输入格式
一行两个数表示 $N,M$ 。
## 输出格式
第一行输出一个数表示填充的 $1$ 的数量。
接下来 $N$ 行输出一个 $N\times M$ 的 $0/1$ 矩阵,为 $1$ 表示这个位置填充了一格水,为 $0$ 表示留空。
如果有多个方案,任意输出一个即可。
## 样例 #1
### 样例输入 #1
```
1 2
```
### 样例输出 #1
```
2
1 1
```
## 样例 #2
### 样例输入 #2
```
1 3
```
### 样例输出 #2
```
2
1 0 1
```
## 样例 #3
### 样例输入 #3
```
3 3
```
### 样例输出 #3
```
3
1 0 1
0 0 0
0 1 0
```
## 提示
对于 $100\%$ 的数据,保证 $N\times M\le 10^6$。
- 子任务 1(10 分),$N,M\le 4$。
- 子任务 2(20 分),$N\times M\le 1000$。
- 子任务 3(30 分),$N = M$。
- 子任务 4(40 分),无特殊限制。
样例输入 复制
样例输出 复制