Description

Given a matrix, the elements of which are all integer number from 0 to 50, you are required to evaluate the square sum of its specified sub-matrix.


Input

The first line of the input contains a single integer T (1 <= T <= 5), the number of test cases.

For each test case, the first line contains two integers m and n (1
<= m, n <= 500), which are the row and column sizes of the matrix,
respectively. The next m lines with n numbers each gives the elements
of the matrix.

The next line contains a single integer N (1
<= N <= 100,000), the number of queries. The next N lines give one
query on each line, with four integers r1, c1, r2, c2 (1 <= r1 <=
r2 <= m, 1 <= c1 <= c2 <= n), which are the indices of the
upper-left corner and lower-right corner of the sub-matrix in question.


Output

For each test case, first print the number of the test case, then N
lines with one number on each line, the required square sum. Refer to
the sample output for details.


Sample Input

2
2 3
1 2 3
4 5 6
2
1 1 2 2
1 3 2 3
3 3
4 2 3
2 5 1
7 9 2
1
1 1 3 3


Sample Output

Case 1:
46
45
Case 2:
193

题意:
给一个n*m矩阵 下表(1,1)~~~(n,m)
给两个点做对角线 求中间矩阵的值
朴素算法也可以过 但是这个在不断输入的同时也将值存在数组中 查询更快
  #include <iostream>
 #include <string.h>
 #include <stdio.h>  using namespace std;  int main()
 {
     int t;
     int n,m;
     int k;
     int tt,x1,x2,y1,y2;
     int num;
     int map[505][505];
     scanf("%d",&t);
     for(num=1;num<=t;num++)
     {
         scanf("%d%d",&n,&m);
         memset(map,0,sizeof(map));
         for(int i=1;i<=n;i++)
         {
             for(int j=1;j<=m;j++)
             {
                 scanf("%d",&k);
                 map[i][j]=k*k+map[i-1][j]+map[i][j-1]-map[i-1][j-1];
             }
         }
         printf("Case %d:\n",num);
         scanf("%d",&tt);
         while(tt--)
         {
             scanf("%d%d%d%d",&x1,&y1,&x2,&y2);
             int ans=map[x1-1][y1-1]+map[x2][y2]-map[x1-1][y2]-map[x2][y1-1];
             printf("%d\n",ans);          }
     }
     return 0;
 }
 
 
 
 
 
 
 
 #include<iostream>
#include <string.h>
#include <stdio.h> using namespace std; int a[ 510 ][ 510 ];
int sum[ 510 ][ 510 ]; int main()
{
    int t,n,m,tt;
    int ss;
    int k;
    int r1,c1,r2,c2;
    scanf("%d",&t);
    for(k=1; k<=t; k++)
    {
        scanf("%d%d",&n,&m);
        memset(sum,0,sizeof(sum));
        for(int i=1; i<=n; i++)
        {
            ss = 0;
            for(int j=1; j<=m; j++)
            {
                scanf("%d",&a[i][j]);
                ss += a[i][j] * a[i][j];
                sum[i][j] = sum[ i - 1 ][ j ] + ss;
            }
        }
        printf("Case %d:\n",k);
        scanf("%d",&tt);
        while(tt--)
        {
            scanf("%d%d%d%d",&r1,&c1,&r2,&c2);
            printf("%d\n",sum[ r2 ][ c2 ] - sum[ r1-1 ][ c2 ] -  sum[ r2 ][ c1 - 1 ] + sum[ r1 - 1 ][ c1 - 1 ]  );
        }
    }
    return 0; }

E - Evaluate Matrix Sum的更多相关文章

  1. HihoCoder1336 Matrix Sum(二维树状数组求和)

    时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 You are given an N × N matrix. At the beginning every element ...

  2. hihocode 1336 Matrix Sum 【二维树状数组】

    题目 两个操作: 1. Add x y value: Add value to the element Axy. (Subscripts starts from 0 2. Sum x1 y1 x2 y ...

  3. 1336 : Matrix Sum (hihocoder)

    题目链接: 点击打开链接 二维树状数组,百度一大堆,我只是存代码的 #include<stdio.h> #include<iostream> #include<algor ...

  4. Matrix Sum HihoCoder - 1336 二维树状数组 感觉好像二维差分。

    #include<cstdio> #include<cstring> using namespace std; typedef long long ll; ; ; ll c[N ...

  5. Project Euler 345: Matrix Sum

    题目 思路: 将问题转化成最小费用流 代码: #pragma GCC optimize(2) #pragma GCC optimize(3) #pragma GCC optimize(4) #incl ...

  6. UVa 11149 Power of Matrix(倍增法、矩阵快速幂)

    题目链接: 传送门 Power of Matrix Time Limit: 3000MS      Description 给一个n阶方阵,求A1+A2+A3+......Ak. 思路 A1+A2+. ...

  7. POJ 3233 Matrix Power Series(矩阵高速功率+二分法)

    职务地址:POJ 3233 题目大意:给定矩阵A,求A + A^2 + A^3 + - + A^k的结果(两个矩阵相加就是相应位置分别相加).输出的数据mod m. k<=10^9.     这 ...

  8. C++题解:Matrix Power Series ——矩阵套矩阵的矩阵加速

    Matrix Power Series r时间限制: 1 Sec 内存限制: 512 MB 题目描述 给定矩阵A,求矩阵S=A^1+A^2+--+A^k,输出矩阵,S矩阵中每个元都要模m. 数据范围: ...

  9. POJ 3233 Matrix Power Series(二分等比求和)

    Matrix Power Series [题目链接]Matrix Power Series [题目类型]二分等比求和 &题解: 这题我原来用vector写的,总是超时,不知道为什么,之后就改用 ...

随机推荐

  1. POJ3417 Network

    一道LCA+树上差分 原题链接 显然每一条新增边都会导致环. 如果试着举些例子的话,很容易发现割掉非环上的边,则割掉其他任意一条新增边都可达成目标:若割掉的原有边是一个环上的边,那么只有割掉导致这个环 ...

  2. P3587 [POI2015]POD

    题目描述 长度为n的一串项链,每颗珠子是k种颜色之一. 第i颗与第i-1,i+1颗珠子相邻,第n颗与第1颗也相邻.切两刀,把项链断成两条链.要求每种颜色的珠子只能出现在其中一条链中.求方案数量(保证至 ...

  3. Composer 中文镜像 Lavavel-china 公益项目

    『Composer 中国全量镜像』是由 Laravel China 社区联合 又拍云 与 优帆远扬 共同合作推出的公益项目,旨在为广大 PHP 用户提供稳定和高速的 Composer 国内镜像服务. ...

  4. python正则表达式获取两段标记内的字符串

    比如获取绿色字符串 ModelData.PayTableData =[{"}, {"}, {"}]; ModelData.PayTableData1 =[{"} ...

  5. centos 6.5 配置ssh免登录

    生成密匙: ssh-keygen -t rsa 会生成 id_rsa  id_rsa.pub id_rsa:私匙 id_rsa.pub:公匙 配置当前机器免登录: cp id_rsa.pub auth ...

  6. 如何烧写BIOS到SD卡里面

    针对TINY6410 ADK型号 1.SD卡格式化为FAT32或者FAT格式 2.将SD卡插入USB接口的读卡器,并插在PC的USB口 3.“以管理员身份运行”SD-Flasher.exe(在tiny ...

  7. 嵌入式C编程代码优化笔记

    [优化永远是追求某种平衡而不是走极端,优化是有侧重点的,优化是一门平衡的艺术,它往往要以牺牲程序的可读性或者增加代码长度为代价] 1.选择合适的算法和数据结构 选择一种合适的数据结构很重要,如果在一堆 ...

  8. 尼克的任务(P1280)

    题目链接:尼克的任务 这道题,有点难度,也不是太难,因为我都做出来了. 好,下面分析一下: 这道题,显然的动规,我们这样设计状态. 我们设d[i]为从第i分钟初开始到结束有多少空闲时间. 那么我们的转 ...

  9. day08作业---函数

    '''2.写函数,检查获取传入列表或元组对象的所有奇数位索引对应的元素,并将其作为新列表返回给调用者.'''#学会了 原来 range(len(iter)) 是 从零到len-1 的数的组合 建新放在 ...

  10. 如何将字符串转化为Jsoup的Document 对象

    有些时候在java操作解析html元素的时候比较繁琐,今天螃蟹就介绍一种可将html转换为document对象的方法——jsoup jsoup为我们解析html提供了比较全的API接口,我们通过将ht ...