P0996

[JSOI2009]Count

[JSOI2009]Count

给定一个 N×MN\times M 的方格矩阵,初始时每个格子都有一个整数权值。接下来需要处理以下两种操作:

  • 修改一个格子的权值;
  • 查询一个子矩阵中权值等于指定值的格子数量。

输入格式

第一行包含两个整数 NN、MM,表示方格矩阵的行数和列数。

接下来 NN 行,每行包含 MM 个整数。其中,第 ii 行的第 jj 个整数表示格子 (i,j)(i,j) 的初始权值。

随后一行包含一个整数 QQ,表示操作数量。

接下来 QQ 行,每行描述一个操作,格式如下:

  • 1 x y c:将格子 (x,y)(x,y) 的权值修改为 cc;
  • 2 x1 x2 y1 y2 c:查询满足 x1≤x≤x2x_1\le x\le x_2、y1≤y≤y2y_1\le y\le y_2 且权值等于 cc 的格子数量。

输出格式

对于每个操作 22,按照其在输入中出现的顺序输出一行,包含一个整数,表示查询得到的格子数量。

样例输入

3 3
1 2 3
3 2 1
2 1 3
3
2 1 2 1 2 1
1 2 3 2
2 2 3 2 3 2

样例输出

1
2

数据范围

  • 1≤N,M≤3001\le N,M\le 300;
  • 1≤Q≤2×1051\le Q\le 2\times 10^5;
  • 1≤x≤N1\le x\le N,1≤y≤M1\le y\le M;
  • 1≤c≤1001\le c\le 100;
  • 查询范围内的格子满足 x1≤x≤x2x_1\le x\le x_2、y1≤y≤y2y_1\le y\le y_2。

来源与许可

本题为 JSOI 2009 试题「Count」,题面与测试数据整理自 BZOJ。

样例 1

输入

3 3
1 2 3
3 2 1
2 1 3
3
2 1 2 1 2 1
1 2 3 2
2 2 3 2 3 2

输出

1
2