首页 > 其他分享 >11.Acwing基础课第795题-简单-前缀和

11.Acwing基础课第795题-简单-前缀和

时间:2023-08-25 21:33:55浏览次数:30  
标签:11 795 x1 int 矩阵 x2 y1 y2 Acwing

11.Acwing基础课第795题-简单-前缀和

题目描述

输入一个 n 行 m 列的整数矩阵,再输入 q 个操作,每个操作包含五个整数 x_{1},y_{1},x_{2},y_{2},c,其中 (x_{1},y_{1}) 和 (x_{2},y_{2}) 表示一个子矩阵的左上角坐标和右下角坐标。

每个操作都要将选中的子矩阵中的每个元素的值加上 c。

请你将进行完所有操作后的矩阵输出。

输入格式

第一行包含整数 n,m,q。

接下来 n 行,每行包含 m 个整数,表示整数矩阵。

接下来 q 行,每行包含 5 个整数 x_{1},y_{1},x_{2},y_{2},c,表示一个操作。

输出格式

共 n 行,每行 m 个整数,表示所有操作进行完毕后的最终矩阵。

数据范围

1≤n,m≤1000,

1≤q≤100000,

1≤ x_{1}x_{2}≤n,

1≤y_{1}y_{2}≤m,

−1000≤c≤1000,

−1000≤矩阵内元素的值≤1000

输入样例

3 4 3
1 2 2 1
3 2 2 1
1 1 1 1
1 1 2 2 1
1 3 2 3 2
3 1 3 4 1

输出样例

2 3 4 1
4 3 4 1
2 2 2 2

思路解析:

算法:差分

代码:

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>

using namespace std;

const int N = 1010;

int n, m, q;
int a[N][N], b[N][N];

void insert(int x1, int y1, int x2, int y2, int c)
{
    b[x1][y1] += c;
    b[x2 + 1][y1] -= c;
    b[x1][y2 + 1] -= c;
    b[x2 + 1][y2 + 1] += c;
}

int main()
{
    scanf("%d%d%d", &n, &m, &q);

    for (int i = 1; i <= n; i++)
        for (int j = 1; j <= m; j++)
            scanf("%d", &a[i][j]);

    for (int i = 1; i <= n; i++)
        for (int j = 1; j <= m; j++)
            insert(i, j, i, j, a[i][j]);

    while (q--)
    {
        int x1, y1, x2, y2, c;
        cin >> x1 >> y1 >> x2 >> y2 >> c;
        insert(x1, y1, x2, y2, c);
    }

    for (int i = 1; i <= n; i++)
        for (int j = 1; j <= m; j++)
            b[i][j] += b[i - 1][j] + b[i][j - 1] - b[i - 1][j - 1];

    for (int i = 1; i <= n; i++)
    {
        for (int j = 1; j <= m; j++) printf("%d ", b[i][j]);
        puts("");
    }

    return 0;
}

标签:11,795,x1,int,矩阵,x2,y1,y2,Acwing
From: https://www.cnblogs.com/codemagiciant/p/17658002.html

相关文章

  • 10.Acwing基础课第797题-简单-差分
    10.Acwing基础课第797题-简单-差分题目描述输入一个长度为n的整数序列。接下来输入m个操作,每个操作包含三个整数l,r,c,表示将序列中[l,r]之间的每个数加上c。请你输出进行完所有操作后的序列。输入格式第一行包含两个整数n和m。第二行包含n个整数,表示整数序列......
  • 9.Acwing基础课第796题-简单-子矩阵的和
    9.Acwing基础课第796题-简单-子矩阵的和题目描述输入一个n行m列的整数矩阵,再输入q个询问,每个询问包含四个整数,,,,表示一个子矩阵的左上角坐标和右下角坐标。对于每个询问输出子矩阵中所有数的和。输入格式第一行包含三个整数n,m,q。接下来n行,每行包含m个整数,表示......
  • 12.Acwing基础课第799题-简单-最长连续不重复子序列
    12.Acwing基础课第799题-简单-最长连续不重复子序列题目描述给定一个长度为n的整数序列,请找出最长的不包含重复的数的连续区间,输出它的长度。输入格式第一行包含整数n。第二行包含n个整数(均在0∼1050∼105范围内),表示整数序列。输出格式共一行,包含一个整数,表示最长的不......
  • CF1311F的题解
    前置芝士:二维偏序。二维偏序的板子题。怎么看出是二维偏序的呢?考虑点对\((i,j)\),令\(x_i<x_j\)。若\(v_i>v_j\),则两点会越来越近,易知最短距离为\(0\),所以我们不需要考虑这种情况。所以问题转化成:\(x_i<x_j\)且\(v_i\lev_j\)的点对的距离和。很明显,二维偏序,套板子就......
  • P7 UVA11481 Arrange the Numbers
    UVA11481ArrangetheNumbers组合数问题。做法貌似很多,显然在前\(m\)个数中选\(k\)个,即\(C(m,k)\),然后后面有\(m-k\)个数需要保证不放在自己的位置上,所以后面整体是一个禁位问题,貌似可以用棋盘多项式去推禁位公式,但是暂时不会。不过还有另外一种思路,就是对于后面的\(n-......
  • win10 CUDA11.1安装torch1.9 / reformer_pytorch
    环境NVIDIA-SMI457.52DriverVersion:457.52CUDAVersion:11.1安装torch-gpucondacreate-ntorch1.9python=3.8pipinstalltorch==1.9.1+cu111torchvision==0.10.1+cu111torchaudio==0.9.1-fhttps://download.pytorch.org/whl/torch_stable.htmlc......
  • [CF1158F] Density of subarrays
    Let$c$besomepositiveinteger.Let'scallanarray$a_1,a_2,\ldots,a_n$ofpositiveintegers$c$-array,ifforall$i$condition$1\leqa_i\leqc$issatisfied.Let'scall$c$-array$b_1,b_2,\ldots,b_k$asubarray......
  • 从 Python3.11 新增 SWAP 字节码到基础语法面试题
    点评:典型的送分考验基础的题目,在其他编程语言中可以使用异或运算的方式来实现交换两个变量的值。但是Python中有更为简单明了的Pythonic做法。条件:不允许使用中间变量@目录方法一使用异或(XOR)运算符方法二使用Python的解包特性(元组解包)来交换变量的值元组解包ROT_......
  • 关于周考 Round 11 吐槽 & 自己如何犯智
    T1卡map。map\(\to\)unordered_map,\(10\to100\)。为什么别人认为这是卡longlong?(好像都卡了。:sad:)T3一眼dp然后否决掉了,写了个搜索,并且认为搜索是正解,并且调了很久发现假了,我是Joker。T4看到了\(u_i<v_i\)但是neglected!!1然后我不会倒序dp而是dfs!!!而且可......
  • pdfjs-dist v2.11.338写个react demo
    app.jsximport'./App.css'import*aspdfjsfrom"pdfjs-dist";import"pdfjs-dist/web/pdf_viewer.css";import{useEffect,useRef,useState}from'react'import{PDFViewer,PDFLinkService,EventBus}from'p......