#CF3716. 整理桌面

整理桌面

题目描述

你的朋友光头强要求你帮他重新整理他的电脑桌面。电脑桌面可以表示为一个大小为 n×mn×m 的字符矩阵,由字符 . 表示空单元格,字符 * 表示图标。

当所有图标从左往右依次占据满若干列,不够占满一列的图标位于下一列的最顶上几个位置时,桌面被称为整洁的。这就像现实生活中的电脑图标被自动排列过后一样。

在一次操作中,你可以拿起一个图标并将其移动到桌面上的任何空单元格中。

光头强喜欢在桌面上添加和删除一些图标,所以他要求你回答 qq 个查询:在添加/删除一个图标后,使桌面成为整洁的所需的最小移动次数是多少?

请注意,每次查询都会真的改变桌面的状态,从而影响后一次查询所面对的局面。

输入格式

输入的第一行包含三个整数 nnmmq(1n,m10001q2×105)q(1≤n,m≤1000;1≤q≤2×10^5) ——桌面的行数,桌面的列数和查询的数量。

接下来的 nn 行描述了桌面。它们中的第 ii 行包含 mm 个字符 .*——描述了桌面的第 ii 行。

接下来的 qq 行描述了查询。它们中的第 ii 行包含两个整数 xix_iyi(1xin1yim)y_i(1≤x_i≤n;1≤y_i≤m) ——更改其状态的单元格的位置(如果该单元格之前包含图标,则删除该图标,否则在此单元格中添加一个图标)。

输出格式

输出 qq 个整数,第 ii 个整数表示在执行前 ii 次操作后使桌面变整洁所需的最小操作次数。

测试样例

输入数据 1

4 4 8
..**
.*..
*...
...*
1 3
2 3
3 1
2 3
3 4
4 3
2 3
2 2

输出数据 1

3
4
4
3
4
5
5
5

输入数据 2

2 5 5
*...*
*****
1 3
2 2
1 3
1 5
2 3

输出数据 2

2
3
3
3
2

样例说明

第一组测试数据前四次操作为:

消除1行3列处的图标。 添加2行3列处的图标。 消除3行1列处的图标。 消除2行3列处的图标。

第一组测试数据的前四次操作后的效果,分别需要3443次操作才能整洁。

...* ...* ...* ...* 
.*.. .**. .**. .*..
*... *... .... ....
...* ...* ...* ...*