题意解释:将图标按列排布,保证每个图标的上方和左方都有图标(就像电脑图标一样),并在询问的过程中改变图标,要求出最小合法步数
模拟写法:在读入和处理中维护四个变量:cnt,cou,a,b,分别表示*的总量,不需要移动图案数,
需要放满的前a-1列,第a列需要放满前b行,最终的答案就是cnt-cou。
**注意**:对于每一次查询都需要保留改动后的图标。
#include<iostream>
#include<cstring>
#include<algorithm>
#define endl '\n'
using namespace std;
const int N = 1005;
char g[N][N];
int cnt, cou;
int a, b, x, y;
int n, m, q;
int main()
{
cin >> n >> m >> q;
for (int i = 1; i <= n; i++)
for (int j = 1; j <= m; j++) {
cin >> g[i][j];
if (g[i][j] == '*')cnt++;
}
int a = cnt / n, b = cnt % n;
if (b == 0 && a != 0)
a--, b = n;
a++;
for (int i = 1; i <= n; i++)
for (int j = 1; j < a; j+