QOJ.ac

QOJ

実行時間制限: 2.0 s メモリ制限: 512 MB 満点: 100 ハック可能 ✓

#10518. Эрозия и дилатация

統計

Эрозия и дилатация — две базовые операции в цифровой обработке изображений, используемые для уменьшения или расширения белых областей на бинарном изображении соответственно.

Дана матрица $A$ размера $n \times n$, состоящая из $0$ и $1$, и последовательность операций. Последовательность содержит два типа операций:

  • $0\ k$: обновить значения во всех позициях по следующему правилу: если в пределах Чебышёвского расстояния, не превышающего $k$, от некоторой позиции существует позиция со значением $0$, то значение в этой позиции становится $0$. Формально: для позиции $(x_a, y_a)$, если существует позиция $(x_b, y_b)$ такая, что $\max(|x_a - x_b|, |y_a - y_b|) \le k$ и $A(x_b, y_b) = 0$, то обновить $A(x_a, y_a) = 0$.
  • $1\ k$: обновить значения во всех позициях по следующему правилу: если в пределах Чебышёвского расстояния, не превышающего $k$, от некоторой позиции существует позиция со значением $1$, то значение в этой позиции становится $1$. Формально: для позиции $(x_a, y_a)$, если существует позиция $(x_b, y_b)$ такая, что $\max(|x_a - x_b|, |y_a - y_b|) \le k$ и $A(x_b, y_b) = 1$, то обновить $A(x_a, y_a) = 1$.

Примечание: все изменения при каждой операции происходят одновременно.

Вам необходимо выполнить последовательность операций над матрицей $A$ и вывести матрицу после завершения последней операции.

Входные данные

Каждый файл теста содержит несколько наборов входных данных. Первая строка содержит количество наборов данных $T$ ($1 \le T \le 100$). Формат каждого набора данных следующий:

Первая строка содержит два целых числа $n$ и $q$ ($1 \le n \le 500, 1 \le q \le 10^6$), обозначающие длину стороны квадратной матрицы $A$ и количество операций соответственно.

Далее следуют $n$ строк, $i$-я из которых содержит строку из $0$ и $1$ длиной $n$, представляющую $i$-ю строку матрицы $A$.

Далее следуют $q$ строк, каждая из которых содержит два целых числа $op, k$ ($op \in \{0, 1\}, 1 \le k \le n$), обозначающие операцию.

Гарантируется, что сумма $n$ по всем наборам данных в одном файле не превышает $500$, а сумма $q$ не превышает $10^6$.

Выходные данные

Для каждого набора данных выведите $n$ строк, $i$-я из которых содержит строку из $0$ и $1$ длиной $n$, представляющую $i$-ю строку матрицы после выполнения всех операций.

Примеры

Входные данные 1

2
5 3
00001
00000
00000
11000
11000
0 1
1 3
0 1
6 2
000000
000001
000011
000111
001111
011111
1 2
0 2

Выходные данные 1

00000
00000
11100
11100
11100
000011
000011
000011
000111
111111
111111

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.