#P0909. 子矩阵最小值之和

子矩阵最小值之和

题目描述

给你一个 n×mn \times m(即 nnmm 列)的数字矩阵 hh。我们用 hi,jh_{i,j} 表示该矩阵中从上到下第 ii 行从左往右第 jj 列的那个元素(行号和列号都是从 11 开始)。

对于矩阵 hh 中的每一个 a×ba \times b 的子矩阵,该子矩阵的得分定义为其中数值最小的那个元素的数值。而整个矩阵 hh 的得分定义为它的所有大小为 a×ba \times b 的子矩阵的得分之和。

请你计算矩阵 hh 的得分。

也就是说,你需要求出矩阵 hh 的每一个大小为 a×ba \times b 的子矩阵中的最小值之和。

因为这个子矩阵比较大,所以我们在输入的时候并不给出矩阵 hh 中的每个元素的数值,而是先告诉你四个整数 g0,x,yg_0, x, yyy。对于任意 i>0i \gt 0,均可以通过递推式 gi=(gi1x+y) mod zg_i = (g_{i - 1} \cdot x + y) \text{ mod } z 得到 gig_i 的数值。而 hi,j=g(i1)m+j1h_{i, j} = g_{(i - 1) \cdot m + j - 1}(其中 (i1)m+j1(i - 1) \cdot m + j - 1 表示下标)。

输入格式

第一行,四个整数 n,m,a,bn, m, a, b,以空格分隔(1n,m3000,1an,1bm1 \le n,m \le 3000, 1 \le a \le n, 1 \le b \le m)。

第二行,四个整数 g0,x,y,zg_0, x, y, z,以空格分隔(0g0,x,y<z1090 \le g_0, x, y < z \le 10^9)。

输出格式

输出一个整数,表示矩阵 hh 的得分。

样例

3 4 2 1
1 2 3 59
3 4 2 1
1 2 3 59
15 14 3 4
3 25 8 97
900

说明/提示

样例 1 对应的矩阵 hh 如下:

数据规模与约定

  • 对于 20%20\% 的数据,n,m30;z103n,m \le 30; z \le 10^3
  • 对于 50%50\% 的数据,n,m300;z106n,m \le 300; z \le 10^6
  • 对于 100%100\% 的数据,1n,m3000,1an,1bm1 \le n,m \le 3000, 1 \le a \le n, 1 \le b \le m0g0,x,y<z1090 \le g_0, x, y < z \le 10^9