测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A7361. [COCI 2024/2025 #3] 涂矩阵 / Bojanje

编程题 普及+/提高
知识点

题目描述

有一个初始为全白的 $n\times n$ 矩阵。

每次操作可以选择一列或者一行,将这一列或者这一行覆盖成红色或者蓝色。

给定矩阵的目标状态,请你构造一组操作序列,使得矩阵达到目标状态,或者报告无解。

不需要最小化操作序列的长度,只需要构造出合法方案即可。

输入格式

第一行,一个正整数 $n$。

接下来 $n$ 行,每行 $n$ 个整数,第 $i$ 行第 $j$ 个整数 $a_{i,j}$ 描述目标状态中第 $i$ 行第 $j$ 列格子的颜色:

$0$ 表示白色。

$1$ 表示红色。

$2$ 表示蓝色。

输出格式

如果无解,输出 $-1$。

否则,第一行输出一个整数 $k$,表示操作序列长度。

你需要保证 $0\le k\le 4000$。

接下来 $k$ 行,每行三个正整数 $a,b,c$,依次描述一次操作:

$a\in\{1,2\}$。

$a=1$ 表示选择的是行。

$a=2$ 表示选择的是列。

$1\le b\le n$,表示选择的是第 $b$ 行或者第 $b$ 列。

$c\in\{1,2\}$。

$c=1$ 表示涂成红色。

$c=2$ 表示涂成蓝色。

输入输出样例

输入 #1
3
0 0 1
1 1 1
0 0 1
输出 #1
2
2 3 1
1 2 1
输入 #2
3
1 1 2
2 1 1
2 1 1
输出 #2
-1
输入 #3
4
0 1 2 1
2 2 2 1
0 1 2 1
1 1 2 1
输出 #3
5
2 2 1
1 2 2
2 4 1
1 4 1
2 3 2

说明/提示

## 数据范围

对于 $100\%$ 的数据:

$1\le n\le 2000$

$0\le a_{i,j}\le 2$

输出操作数需要满足:

$0\le k\le 4000$

## 子任务

| 子任务编号 | $n\le$ | 特殊性质 | 得分 |
| :--: | :--: | :--: | :--: |
| $1$ | $2000$ | 特殊性质 A | $15$ |
| $2$ | $100$ | 无 | $35$ |
| $3$ | $2000$ | 无 | $40$ |

特殊性质 A:$a_{i,j}\in\{0,1\}$。
上一题 去做题 下一题