E - Evaluate Matrix Sum
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的更多相关文章
- HihoCoder1336 Matrix Sum(二维树状数组求和)
时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 You are given an N × N matrix. At the beginning every element ...
- 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 ...
- 1336 : Matrix Sum (hihocoder)
题目链接: 点击打开链接 二维树状数组,百度一大堆,我只是存代码的 #include<stdio.h> #include<iostream> #include<algor ...
- Matrix Sum HihoCoder - 1336 二维树状数组 感觉好像二维差分。
#include<cstdio> #include<cstring> using namespace std; typedef long long ll; ; ; ll c[N ...
- Project Euler 345: Matrix Sum
题目 思路: 将问题转化成最小费用流 代码: #pragma GCC optimize(2) #pragma GCC optimize(3) #pragma GCC optimize(4) #incl ...
- UVa 11149 Power of Matrix(倍增法、矩阵快速幂)
题目链接: 传送门 Power of Matrix Time Limit: 3000MS Description 给一个n阶方阵,求A1+A2+A3+......Ak. 思路 A1+A2+. ...
- POJ 3233 Matrix Power Series(矩阵高速功率+二分法)
职务地址:POJ 3233 题目大意:给定矩阵A,求A + A^2 + A^3 + - + A^k的结果(两个矩阵相加就是相应位置分别相加).输出的数据mod m. k<=10^9. 这 ...
- C++题解:Matrix Power Series ——矩阵套矩阵的矩阵加速
Matrix Power Series r时间限制: 1 Sec 内存限制: 512 MB 题目描述 给定矩阵A,求矩阵S=A^1+A^2+--+A^k,输出矩阵,S矩阵中每个元都要模m. 数据范围: ...
- POJ 3233 Matrix Power Series(二分等比求和)
Matrix Power Series [题目链接]Matrix Power Series [题目类型]二分等比求和 &题解: 这题我原来用vector写的,总是超时,不知道为什么,之后就改用 ...
随机推荐
- 如何通过class文件来查看java的版本
我们知道class文件是通过javac编译生成的,如果我们想知道是java的那个版本生成的,该怎么做? 很简单,Linux下只要使用od命令,如下: 前四个字节为固定的cafe babe,接下来的四个 ...
- 20172306《Java程序设计》第五周学习总结
20172306 2016-2017-2 <Java程序设计>第五周学习总结 教材学习内容总结 第五章主要学习了if以及while的语句的运用 运算符:== 代表相等,是两个之间的内存地址 ...
- UI设计教程分享:让你彻底读懂字体
一份普普通通.规规矩矩的设计 一份让人印象深刻.新颖有趣的设计 差在哪?其实就差在三个字上! “优秀的设计不是每一个细节都有亮点,而是弱化其他元素,让某一个亮点最大化.” 今天“骉叔的设计心得”就来总 ...
- ubuntu系统ftp连接 以及ssh连接
tfp连接 ssh连接 ubuntu下ssh使用 与 SCP 使用 1 ssh远程登录服务器 ssh username@remote_ip #将username换成自己的用户名,将remote_ip换 ...
- linux的!的用法
!的用法:1.!!:代表上一条命令,如下: 示例一: ./some-shell-command cat !! (相当于cat ./some-shell-command) 示例二: cd /user ! ...
- Quartz(强大的定时器)
1.关于Quartz的配置文件说明 # # Quartz会优先读取项目下我们自定义这个quartz.properties配置文件 否则会去读取quartzjar包下org.quatrz包# 下面的那个 ...
- layer 弹框不显示内容
// layer的弹框不显示信息 可能是背景颜色和字体颜色冲突 改下字体颜色即可 layer.msg('<p style="color:black">用户名不能为空&l ...
- 半透明全屏蒙层+全屏屏蔽+内容居中+css
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 菜品识别 SDK调用
from aip import AipImageClassify import os """ 填入参数 """ APP_ID = 'your ...
- java常用设计模式九:桥接模式
一.概述 将抽象部分与它的实现部分分离,使它们都可以独立地变化.它是一种对象结构型模式.比如存在2个维度,第一个维度有一个抽象类A和对应的子类A1和A2:第二个维度有另一个接口B和对应的子类B1和B2 ...