如何做公众号小说网站赚钱,简述电子商务的概念,上海网站建设开发公司,商丘网站制作教程给定原矩阵a[i,j],构造差分矩阵b[i,j],使得a[][]是b[][]的二维前缀和
核心操作#xff1a; 给以(x1,y1)为左上角,(x2,y2)为右下角的子矩阵中的所有数a[i][j]全部都加上C
b[x1,y1]C; b[x1,y21]-C; b[x21,y1]-C; b[x21,y21]C;
例题#xff1a; 输入一个n行m列的整数矩阵 给以(x1,y1)为左上角,(x2,y2)为右下角的子矩阵中的所有数a[i][j]全部都加上C
b[x1,y1]C; b[x1,y21]-C; b[x21,y1]-C; b[x21,y21]C;
例题 输入一个n行m列的整数矩阵再输入q个操作每个操作包含五个整数x1, y1, x2, y2, c其中(x1, y1)和(x2, y2)表示一个子矩阵的左上角坐标和右下角坐标。
每个操作都要将选中的子矩阵中的每个元素的值加上c。 请你将进行完所有操作后的矩阵输出。
输入格式 第一行包含整数n,m,q。 接下来n行每行包含m个整数表示整数矩阵。 接下来q行每行包含5个整数x1, y1, x2, y2, c表示一个操作。
输出格式 共 n 行每行 m 个整数表示所有操作进行完毕后的最终矩阵。
代码如下
#include iostream
using namespace std;
const int N 1010;
int a[N][N];
int b[N][N];
void Insert(int x1,int y1,int x2,int y2,int c)
{b[x1][y1]c;b[x1][y21]-c;b[x21][y1]-c;b[x21][y21]c;
}int main()
{int n,m,q;cinnmq;for (int i 1;in;i)for (int j 1;jm;j){cina[i][j];}for (int i 1;in;i)for (int j 1;jm;j)Insert(i,j,i,j,a[i][j]);while(q--){int x1,y1,x2,y2,c;cinx1y1x2y2c;Insert(x1,y1,x2,y2,c);}for (int i 1;in;i)for(int j 1;jm;j){a[i][j] a[i-1][j]a[i][j-1]-a[i-1][j-1]b[i][j];}for (int i 1;in;i){for (int j 1;jm;j){couta[i][j] ;}coutendl;}return 0;
}