CF1207B.Square Filling
普及-
通过率:0%
时间限制:1.00s
内存限制:256MB
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
You are given two matrices A and B. Each matrix contains exactly n rows and m columns. Each element of A is either 0 or 1; each element of B is initially 0.
You may perform some operations with matrix B. During each operation, you choose any submatrix of B having size 2×2, and replace every element in the chosen submatrix with 1. In other words, you choose two integers x and y such that 1≤x<n and 1≤y<m, and then set Bx,y, Bx,y+1, Bx+1,y and Bx+1,y+1 to 1.
Your goal is to make matrix B equal to matrix A. Two matrices A and B are equal if and only if every element of matrix A is equal to the corresponding element of matrix B.
Is it possible to make these matrices equal? If it is, you have to come up with a sequence of operations that makes B equal to A. Note that you don't have to minimize the number of operations.
给你两个矩阵 A 和 B。每个矩阵恰好包含 n 行和 m 列。矩阵 A 的每个元素为 0 或 1;矩阵 B 的每个元素初始均为 0。
你可以对矩阵 B 执行若干次操作。每次操作中,你选择 B 的任意一个大小为 2×2 的子矩阵,并将该子矩阵中的每个元素都置为 1。换言之,你选择两个整数 x 和 y,满足 1≤x<n 且 1≤y<m,然后将 Bx,y、Bx,y+1、Bx+1,y 和 Bx+1,y+1 均设为 1。
你的目标是使矩阵 B 等于矩阵 A。当且仅当矩阵 A 的每个元素均等于矩阵 B 中对应位置的元素时,称两个矩阵 A 和 B 相等。
能否使这两个矩阵相等?若可以,请给出一个操作序列,使得 B 变为 A。注意:你无需最小化操作次数。
输入格式
The first line contains two integers n and m (2≤n,m≤50).
Then n lines follow, each containing m integers. The j-th integer in the i-th line is Ai,j. Each integer is either 0 or 1.
第一行包含两个整数 n 和 m(2≤n,m≤50)。
接下来是 n 行,每行包含 m 个整数。第 i 行中的第 j 个整数为 Ai,j。每个整数均为 0 或 1。
输出格式
If it is impossible to make B equal to A, print one integer −1.
Otherwise, print any sequence of operations that transforms B into A in the following format: the first line should contain one integer k — the number of operations, and then k lines should follow, each line containing two integers x and y for the corresponding operation (set Bx,y, Bx,y+1, Bx+1,y and Bx+1,y+1 to 1). The condition 0≤k≤2500 should hold.
如果无法使 B 等于 A,则输出一个整数 −1。
否则,请输出任意一个将 B 变换为 A 的操作序列,格式如下:第一行输出一个整数 k —— 操作的次数;随后 k 行,每行包含两个整数 x 和 y,表示对应的操作(即将 Bx,y、Bx,y+1、Bx+1,y 和 Bx+1,y+1 均设为 1)。需满足条件 0≤k≤2500。
输入输出样例
输入#1
3 3 1 1 1 1 1 1 0 1 1
输出#1
3 1 1 1 2 2 2
输入#2
3 3 1 0 1 1 0 1 0 0 0
输出#2
-1
输入#3
3 2 0 0 0 0 0 0
输出#3
0
说明/提示
The sequence of operations in the first example:
000000000→110110000→110110110→110111111
第一个示例中的操作序列:
000000000→110110000→110110110→110111111
输入解题思路,AI测评打分。不知道怎么写?