zoukankan      html  css  js  c++  java
  • 二维前缀和模板题

    输入一个n行m列的整数矩阵,再输入q个询问,每个询问包含四个整数x1, y1, x2, y2,表示一个子矩阵的左上角坐标和右下角坐标。

    对于每个询问输出子矩阵中所有数的和。

    输入格式

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

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

    接下来q行,每行包含四个整数x1, y1, x2, y2,表示一组询问。

    输出格式

    共q行,每行输出一个询问的结果。

    数据范围

    1n,m1000
    1q200000,
    1x1x2n,
    1y1y2m
    10001000

    输入样例:

    3 4 3
    1 7 2 4
    3 6 2 8
    2 1 2 3
    1 1 2 2
    2 1 3 4
    1 3 3 4
    

    输出样例:

    17
    27
    21

    AC代码
    #pragma GCC optimize(2)
    #include<bits/stdc++.h>
    using namespace std;
    inline int read() {int x=0,f=1;char c=getchar();while(c!='-'&&(c<'0'||c>'9'))c=getchar();if(c=='-')f=-1,c=getchar();while(c>='0'&&c<='9')x=x*10+c-'0',c=getchar();return f*x;}
    typedef long long ll;
    const int maxn = 1e3+10;
    int a[maxn][maxn];
    int s[maxn][maxn];
    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>>a[i][j];
                s[i][j]=a[i][j]+s[i-1][j]+s[i][j-1]-s[i-1][j-1];
            }
        }
        int x1,x2,y1,y2;
        int sum=0;
        for(int i=0;i<q;i++){
            cin>>x1>>y1>>x2>>y2;
            sum=s[x2][y2]-s[x1-1][y2]-s[x2][y1-1]+s[x1-1][y1-1];
            printf("%d
    ",sum);
        }
    }
     
  • 相关阅读:
    数据结构作业-二叉树
    51nod 1163 最高的奖励
    51nod 1091 线段的重叠
    实验1 顺序表及其应用
    51nod 1459 迷宫游戏 dijkstra模板
    html5拖拽
    onbeforeunload、onpagehide、onunload、onload、onpageshow的正确执行顺序
    HTML5游戏2D开发引擎
    如何定义现代浏览器
    api文档设计工具:RAML、Swagger
  • 原文地址:https://www.cnblogs.com/lipu123/p/12233484.html
Copyright © 2011-2022 走看看