有一个nn行mm列的矩阵(1 \leq n \leq 1000 ,1 \leq m \leq 1000 )(1≤n≤1000,1≤m≤1000),在这个矩阵上进行qq  (1 \leq q \leq 100,000)(1≤q≤100,000) 个操作:

1 x y: 交换矩阵MM的第xx行和第yy行(1 \leq x,y \leq n)(1≤x,y≤n);
2 x y: 交换矩阵MM的第xx列和第yy列(1 \leq x,y \leq m)(1≤x,y≤m);
3 x y: 对矩阵MM的第xx行的每一个数加上y(1 \leq x \leq n,1 \leq y \leq 10,000)y(1≤x≤n,1≤y≤10,000);
4 x y: 对矩阵MM的第xx列的每一个数加上y(1 \leq x \leq m,1 \leq y \leq 10,000)y(1≤x≤m,1≤y≤10,000);
输入描述
输入包含多组数据. 第一行有一个整数T (1\leq T\leq 15)T(1≤T≤15), 表示测试数据的组数. 对于每组数据:
第一行输入3个整数nn, mm, qq.
接下来的nn行,每行包括mm个整数,表示矩阵MM。(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).
最后qq行,每行输入三个整数a(1 \leq a \leq 4)a(1≤a≤4), xx, yy。
输出描述
对于每组数据,输出经过所有qq个操作以后的矩阵MM。
输入样例
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 先设两个数组 x[i],y[j]分别表示 第 i 行此时应该是第x[i]行,而第j列此时是第y[j]列,
在设两个数组addx[i],addy[j]分别表示 第 i 行加上addx[i], 第j列加上 addy[j]
 #include <iostream>
#include <algorithm>
#include <cstring>
#include <cstdio>
using namespace std;
const int Max = + ;
int x[Max], y[Max], addx[Max], addy[Max];
int g[Max][Max]; int main()
{
int t;
int n, m, q;
scanf("%d", &t);
while (t--)
{
scanf("%d%d%d", &n, &m, &q);
for (int i = ; i <= n; i++)
{
for (int j = ; j <= m; j++)
scanf("%d", &g[i][j]);
}
for (int i = ; i <= n; i++)
x[i] = i; // 初始化为本身
for (int j = ; j <= m; j++)
y[j] = j;
memset(addx, , sizeof(addx));
memset(addy, , sizeof(addy));
while (q--)
{
int op;
int tx ,ty;
scanf("%d%d%d", &op, &tx, &ty);
if (op == )
{
int temp = x[tx]; // 行交换
x[tx] = x[ty];
x[ty] = temp;
}
else if (op == )
{
int temp = y[tx];
y[tx] = y[ty];
y[ty] = temp;
}
else if (op == )
{
addx[ x[tx] ] += ty;
}
else if (op == )
{
addy[ y[tx] ] += ty;
}
}
for (int i = ; i <= n; i++)
{
for (int j = ; j < m; j++)
printf("%d ", g[ x[i] ][ y[j] ] + addx[ x[i] ] + addy[ y[j] ]);
printf("%d\n", g[ x[i] ][ y[m] ] + addx[ x[i] ] + addy[ y[m] ]);
}
}
return ;
}

HDU5671Matrix(矩阵行列交换)的更多相关文章

  1. python 增加矩阵行列和维数

    python 增加矩阵行列和维数 方法1 np.r_ np.c_ import numpy as np a = np.array([[1,2,3],[4,5,6],[7,8,9]]) b = np.a ...

  2. python/numpy/tensorflow中,对矩阵行列操作,下标是怎么回事儿?

    Python中的list/tuple,numpy中的ndarrray与tensorflow中的tensor. 用python中list/tuple理解,仅仅是从内存角度理解一个序列数据,而非数学中标量 ...

  3. python 有关矩阵行列的存取 np.array

    初始化 a = range() a = np.array(a) a = a.reshape(,) a [[ 0  1  2  3]  [ 4  5  6  7]  [ 8  9 10 11]  [12 ...

  4. Codeforces 222B 数组行列交换操作

    /*做完这题发现自己好水,太伤人了.... 不过还是学到一些,如果直接暴力模拟的话肯定是TLM.. 所以要用虚拟数组来分别保存当前数组的每行没列在初始数组中的位置...*/ #include<c ...

  5. [转]unity3d 脚本参考-技术文档

    unity3d 脚本参考-技术文档 核心提示:一.脚本概览这是一个关于Unity内部脚本如何工作的简单概览.Unity内部的脚本,是通过附加自定义脚本对象到游戏物体组成的.在脚本对象内部不同志的函数被 ...

  6. Unity3D脚本中文系列教程(八)

    ◆ static var matrix : Matrix4x4 描述:设置用于渲染所有gizmos的矩阵. 类方法 ◆ Static function DrawCube(center:Vector3, ...

  7. codeforces#1136 C. Nastya Is Transposing Matrices(找规律)

    题意:给出两个n*m的矩阵,每次操作可以让一个正方形矩阵行列交换.问,在无限次操作下,第一个矩阵能否变成第二个矩阵 分析:先把操作限定在2*2的矩阵中.这样对角线上的元素就可以随意交换.也就是说,如果 ...

  8. Delphi图像处理 -- 颜色矩阵变换

    转载自阿发伯:http://blog.csdn.net/maozefa/article/details/8316430 阅读提示:     <Delphi图像处理>系列以效率为侧重点,一般 ...

  9. 计算方法(三)C#矩阵类库

    测量平差以及工科中常常用到矩阵的相关运算,因此自己写了一个,同时考虑到了类库的可用性,这次又重载了比较匀运算符,修正了一些问题 using System; using System.Collectio ...

随机推荐

  1. Bootstrap系列 -- 44. 分页导航

    带页码的分页导航,可能是最常见的一种分页导航,特别是在列表页内容超多的时候,会给用户提供分页的导航方式.平时很多同学喜欢用div>a和div>span结构来制作带页码的分页导航.不过,在B ...

  2. SDRAM读写一字(下)

    SDRAM读写一字 SDRAM控制模块 上电后进行初始化状态,初始化完成后进入空闲状态,在此进行判断如下判断: 如果自刷新时间到,则进行自刷新操作,操作完成后重新进入空闲状态: 如果读使能有效则进行读 ...

  3. oracle 删除用户及相关表数据,释放磁盘空间

    来源于:http://www.itpub.net/thread-513609-1-1.html http://bbs.csdn.net/topics/330251089 http://blog.csd ...

  4. 二叉树的建立与递归遍历C语言版

    </pre><pre name="code" class="cpp">#include <stdio.h> #include ...

  5. SVN_限制注释长度

      一.说明 svn服务器上每个项目都会有单独一个文件夹,文件夹下有一个hooks文件夹,可以在pre-commit添加内容限制注释输入 项目t1的下的hooks文件夹   二.操作步骤 注意:修改的 ...

  6. 【转】C#判断奇偶数的函数

    // 现代流行的"程序员" public static bool IsOdd(int n) { while (true) { switch (n) { : return true; ...

  7. 51nod 1076强连通

    Tarjan算法来解这题.无向图可以转化为有向图来解决. #include<map> #include<queue> #include<stack> #includ ...

  8. Maven-pom.xml详解

    (看的比较累,可以直接看最后面有针对整个pom.xml的注解) pom的作用 pom作为项目对象模型.通过xml表示maven项目,使用pom.xml来实现.主要描述了项目:包括配置文件:开发者需要遵 ...

  9. Activity的四种launchMode

    来源:http://blog.csdn.net/liuhe688/article/details/6754323/ 我们今天要讲的是Activity的四种launchMode. launchMode在 ...

  10. Windows系统中path环境变量详解

    在学习JAVA的过程中,涉及到多个环境变量(environment variable)的概念,如PATH.正确地配置这些环境变量,是能够顺利学习.开发的前提.而经常出现的问题是:有的学习者能够按照提示 ...