Matrix

 Accepts: 214

 Submissions: 1115

 Time Limit: 3000/1500 MS (Java/Others)

 Memory Limit: 131072/131072 K (Java/Others)

问题描述
有一个nnn行mmm列的矩阵(1≤n≤1000,1≤m≤1000)(1 \leq n \leq 1000 ,1 \leq m \leq 1000 )(1≤n≤1000,1≤m≤1000),在这个矩阵上进行qq q (1≤q≤100,000)(1 \leq q \leq 100,000)(1≤q≤100,000) 个操作:

1 x y: 交换矩阵MMM的第xxx行和第yyy行(1≤x,y≤n)(1 \leq x,y \leq n)(1≤x,y≤n);
2 x y: 交换矩阵MMM的第xxx列和第yyy列(1≤x,y≤m)(1 \leq x,y \leq m)(1≤x,y≤m);
3 x y: 对矩阵MMM的第xxx行的每一个数加上y(1≤x≤n,1≤y≤10,000)y(1 \leq x \leq n,1 \leq y \leq 10,000)y(1≤x≤n,1≤y≤10,000);
4 x y: 对矩阵MMM的第xxx列的每一个数加上y(1≤x≤m,1≤y≤10,000)y(1 \leq x \leq m,1 \leq y \leq 10,000)y(1≤x≤m,1≤y≤10,000);

输入描述
输入包含多组数据. 第一行有一个整数T(1≤T≤15)T (1\leq T\leq 15)T(1≤T≤15), 表示测试数据的组数. 对于每组数据:
第一行输入3个整数nnn, mmm, qqq.
接下来的nnn行,每行包括mmm个整数,表示矩阵MMM。(1≤Mi,j≤10,000),(1≤i≤n,1≤j≤m)(1 \leq M_{i,j} \leq 10,000),(1 \leq i \leq n,1 \leq j \leq m)(1≤M
​i,j
​​≤10,000),(1≤i≤n,1≤j≤m).
最后qqq行,每行输入三个整数a(1≤a≤4)a(1 \leq a \leq 4)a(1≤a≤4), xxx, yyy。

输出描述
对于每组数据,输出经过所有qqq个操作以后的矩阵MMM。

输入样例
2
3 4 2
1 2 3 4
2 3 4 5
3 4 5 6
1 1 2
3 1 10
2 2 2
1 10
10 1
1 1 2
2 1 2

输出样例
12 13 14 15
1 2 3 4
3 4 5 6
1 10
10 1
思路

对于交换行、交换列的操作,分别记录当前状态下每一行、每一列是原始数组的哪一行、哪一列即可。

对每一行、每一列加一个数的操作,也可以两个数组分别记录。注意当交换行、列的同时,也要交换增量数组。

输出时通过索引找到原矩阵中的值,再加上行、列的增量。

复杂度O(q+mn)O(q+mn)O(q+mn)

代码

#include<iostream>
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
int idx[1500],idy[1500];
int n,m,p;
int aa,bb;
int v;
int T;
long long  xx[1500],yy[1500];
long long  ma[1500][1500];
int main()
{scanf("%d",&T);while(T--){scanf("%d%d%d",&n,&m,&p);for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)scanf("%I64d",&ma[i][j]);for(int i=1;i<=n;i++) {idx[i]=i;xx[i]=0;}for(int j=1;j<=m;j++){idy[j]=j;yy[j]=0;} for(int i=1;i<=p;i++){scanf("%d%d%d",&v,&aa,&bb);if(v==1){swap(idx[aa],idx[bb]);}        else if(v==2){swap(idy[aa],idy[bb]);}else if(v==3){xx[idx[aa]]+=bb;}else if(v==4){yy[idy[aa]]+=bb;}}for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){printf("%I64d",ma[idx[i]][idy[j]]+xx[idx[i]]+yy[idy[j]]);if(j!=m) printf(" ");}printf("\n");}}
}

[hdu 5671][BestCoder Round #81 t2] Matrix相关推荐

  1. HDU 5804 BestCoder Round #86 Price List (水题)

    Price List 题目链接: 点我打开链接 Source BestCoder Round #86  题意:有一个人去 n 间商店购物,在每家商店购买最多一件物品,也可以什么都不买.给你每家商店的物 ...

  2. BestCoder Round #81 (div.2) B Matrix

    B题...水题,记录当前行是由原矩阵哪行变来的. 1 #include<cstdio> 2 #include<cstring> 3 #include<cstdlib> ...

  3. hdu 4932 BestCoder Round #4 1002

    这题真是丧心病狂,引来今天的hack狂潮~ Miaomiao's Geometry Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65 ...

  4. hdu 5671(模拟)

    Matrix Time Limit: 3000/1500 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others) Total S ...

  5. hdu 4956 Poor Hanamichi BestCoder Round #5(数学题)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4956 Poor Hanamichi Time Limit: 2000/1000 MS (Java/Ot ...

  6. HDU 5228 ZCC loves straight flush( BestCoder Round #41)

    题目链接:ZCC loves straight flush 题面: ZCC loves straight flush Time Limit: 2000/1000 MS (Java/Others)    ...

  7. HDU 5597 GTW likes function(规律+欧拉函数模板题)——BestCoder Round #66(div.1 div.2)

    GTW likes function Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Oth ...

  8. hdu4585 amp; BestCoder Round #1 项目管理(vector应用)

    主题链接:http://acm.hdu.edu.cn/showproblem.php?pid=4858 项目管理 Time Limit: 2000/1000 MS (Java/Others)    M ...

  9. 矩阵快速幂---BestCoder Round#8 1002

    当要求递推数列的第n项且n很大时,怎么快速求得第n项呢? 可以用矩阵快速幂来加速计算. 我们可以用矩阵来表示数列递推公式 比如fibonacci数列 可以表示为 [f(n)   f(n-1)] = [ ...

最新文章

  1. SAP RETAIL 参考PO创建分配表之一
  2. 计算机病毒揭秘与对抗--注册表操作2
  3. beautiful loss function
  4. 总帐科目的批量传输与复制
  5. 单片机c语言程序设计叶俊明,单片机C语言程序设计
  6. 厂办大集体改制不签字_许昌二印,磨砂技术被外国觊觎,老工人说烂在肚子里也不外漏...
  7. 【C语言】1161: 字符串长度(指针专题)(空格和\0)
  8. 五子棋 鼠标 C语言,c语言写的鼠标操作的五子棋游戏,欢迎观赏!
  9. hbase 集群(完全分布式)方式安装
  10. Python的一些单行代码(摘抄)
  11. codevs3044 线段树+扫描线
  12. 联通发送wap push备忘录
  13. 图像效果的一些专业测试工具和指标:
  14. idea svn回退版本_mac下使用svn通过终端回退版本到某个版本号 - 博客频道 - CSDN.NET...
  15. Windows程序设计之WinAPI详解程序
  16. HTML网页设计结课作业 榆林子州 HTML5响应式旅游景区网站模板
  17. HTTP协议为什么是无状态的?无状态指的是什么
  18. C语言 输出出生日期
  19. 数据库:Redis数据库
  20. 李炎恢老师PHP第三季视频课程(设计模式+MVC模式+SMARTY+在线商城)

热门文章

  1. 我的Python学习笔记:私有变量
  2. intellij idea 无法使用复制,粘贴按钮
  3. win 11 添加VSCode至右键菜单
  4. python的repr函数
  5. selenium 上传下载调用windows窗口--AutoIT
  6. 蚂蚁金服和他的小伙伴又在搞事情了
  7. aws terraform_如何使用Terraform管理您的AWS基础架构
  8. 案例(一) 利用RFM模型做用户价值分析
  9. dspic33E单片机IOPUWR复位原因之一 程序监控定时器
  10. windows7声卡驱动修复压缩包