2015轻院校赛 矩阵
2016-04-14 20:50
169 查看
---恢复内容开始---
http://acm.zznu.edu.cn/problem.php?id=1967
题目大意 : 矩阵A [i][j]=i+j;
Q代表查询 求任意一个矩阵的和
M代表更换 把原来的换成现在这个数
分析: 如果暴搜肯定不行 就想到一种好方法 把他们的和保存到一个数组 事先打好一个表 后面更新的点一一的记录下来
求和的时候就只需把在这个求得小长方形里的更新的值加到一起 最后在加上原来矩阵的和就可以
---恢复内容结束---
http://acm.zznu.edu.cn/problem.php?id=1967
题目大意 : 矩阵A [i][j]=i+j;
Q代表查询 求任意一个矩阵的和
M代表更换 把原来的换成现在这个数
分析: 如果暴搜肯定不行 就想到一种好方法 把他们的和保存到一个数组 事先打好一个表 后面更新的点一一的记录下来
求和的时候就只需把在这个求得小长方形里的更新的值加到一起 最后在加上原来矩阵的和就可以
#include <iostream> #include <cstring> #include <algorithm> #include <queue> #include <cstdio> #include <cstdlib> #include <cctype> #include <cmath> using namespace std; #define memset(a,b) memset(a,b,sizeof(a)) #define N 1100 struct node { int x,y,c; }a ; int sum ; void Inn() { for(int i=1;i<=N;i++) { for(int j=1;j<=N;j++) { sum[i][j]=sum[i-1][j]+sum[i][j-1]+i+j-sum[i-1][j-1]; } } } int main() { int T,n,m,Q; char str[5]; scanf("%d",&T); Inn(); while(T--) { scanf("%d %d %d",&n,&m,&Q); int k=0; while(Q--) { int x1,x2,y1,y2,h; scanf("%s",str); if(str[0]=='Q') { int ans=0; scanf("%d %d %d %d",&x1,&y1,&x2,&y2); for(int i=0;i<k;i++) { if(a[i].x>=x1 && a[i].x<=x2 && a[i].y>=y1 && a[i].y<=y2) { ans=ans+a[i].c-(a[i].x+a[i].y); } } ans=ans+sum[x2][y2]-sum[x1-1][y2]-sum[x2][y1-1]+sum[x1-1][y1-1]; printf("%d\n",ans); } else { int f=0; scanf("%d %d %d",&x1,&y1,&h); for(int i=0;i<k;i++) { if(x1==a[i].x && y1==a[i].y) { a[i].c=h; f=1; break; } } if(f==0) a[k].x=x1, a[k].y=y1, a[k++].c=h; } } } return 0; }
---恢复内容结束---
相关文章推荐
- sublime3 + markdown 笔记
- 源码包方式搭建LAMP环境
- 排序算法-归并排序
- 【笔试/面试】—— 从大数相减到大数求除(大数求余)
- Hibernate使用复合主键时需要注意的
- CentOS 7 命令行如何连接无线网络
- copy, retain, assign , readonly , readwrite,strong,weak,nonatomic整理
- shell 编程基础-----test或[ 命令
- HDU1016素数环
- getDrawingCache()和Android中的截图方法简介
- linux常用命令(一)
- arm移植NTP(同步嵌入式linux系统时间)
- 验证码(函数实现)
- [置顶] Java设计模式(一) 简单工厂模式不简单
- APP 创建新应用分享注册key网址结合
- Oracle用户和角色
- 有关iphone表情符号的处理
- 设计模式:工厂方法模式(Factory Method)
- 4-14蒟蒻段位赛
- React 入门实例教程(转载)