п»ї
У Фермера Джона есть квадратный холст, представленный решёткой из \(N\) * \(N\)
ячеек, (\(2 \leq N \leq 2000\), \(N\) чётное). Он рисует по следующим правилам:
- Сначала он делит холст на четыре равных квадранта, разделённых горизонтальными
и вертикальными линиями через центр холста.
- Далее он рисует любимую картинку в правом верхнем квадранте холста.
Каждая ячейка верхнего правого квадранта или закрашена (представлено символом '#')
или не закрашена (представлено символом '.').
- Наконец, гордясь своим рисунком, он отражает его через ранее указанные
вертикальные и горизонтальные линии в другие квадранты холста.
Например, предположим \(N=8\) и ФД нарисовал следующую картинку
в правом верхнем квадранте на шаге 2:
.#..
.#..
.##.
....
Тогда после отображения через горизонтальные и вертикальные линии в другие квадранты
на шаге 3, холст будет выглядеть так:
..#..#..
..#..#..
.##..##.
........
........
.##..##.
..#..#..
..#..#..
Однако, пока ФД спал, Беси пробралась в его амбар и украла холст.
А затем занялась вандализмом: Она стерла некоторые ячейки и закрасила
некоторые другие ячейки. После чего вернула холст ФД.
ФД хочет модифицировать холст так, чтобы он снова удовлетворял
условиям отражения, то есть результату отражения правого верхнего
квадранта во все остальные квадранты. Поскольку он имеет ограниченное
количество ресурсов, он хочет получить результат минимальным количеством
операций, закрашивания или стирания одной ячейки.
Вам задан холст после вандализма Беси, а также последовательность
\(U\) (\(0\le U \leq 10^5\)) модификаций холста, каждое переключает ячейку в
'.', если в ней была '#' и наоборот. Прежде каждого обновления и после каждого
обновления выведите минимальное количество операций \(x\), которое требуется выполнить,
чтобы отражение было удовлетворено.
ФОРМАТ ВВОДА (с клавиатуры / stdin):
Первая строка содержит целые числа
\(N\) Рё
\(U\).
Каждая из последующих \(N\) строк содержит \(N\) символов, представляющих
холст после вандализма Беси. Каждый символ или '#', или '.'.
Каждая из последующих \(U\) строк содержит \(r\) и \(c\), где
\(1 \leq r, c \leq N\), представляющих обновление ячейки в \(r\)-ой строке сверху
и \(c\)-ой колонке слева.
ФОРМАТ ВЫВОДА (на экран / stdout):
Выведите \(U+1\) представляющую \(x\) до и после каждого обновления.
ПР�МЕРВВОДА:
4 5
..#.
##.#
####
..##
1 3
2 3
4 3
4 4
4 4
ПР�МЕРВЫВОДА:
4
3
2
1
0
1
Следующий холст удовлетворяет условию отражения и отличается от оригинального
холста на 4 операции:
....
####
####
....
Невозможно сделать исходный холст удовлетворяющим условию отражения
испольуя менее чем 4 операции.
После обновления \((1, 3)\), холст выглядит так:
....
##.#
####
..##
Требуется 3 операции, чтобы холст стал удовлетворять условию отражения.
После обновления \((2, 3)\), холст выглядит так:
....
####
####
..##
Требуется 2 операции, чтобы сделать холст удовлетворяющим условию отражения.
ОЦЕН�ВАН�Е:
- Тесты 2-3: \(N \le 4\)
- Тесты 4-6: \(U \le 10\)
- Тесты 7-16: Нет дополнительных ограничений.
Автор: Chongtian Ma