Matrix

题目连接:

http://acm.hdu.edu.cn/showproblem.php?pid=5671

Description

There is a matrix M that has n rows and m columns (1≤n≤1000,1≤m≤1000).Then we perform q(1≤q≤100,000) operations:

1 x y: Swap row x and row y (1≤x,y≤n);

2 x y: Swap column x and column y (1≤x,y≤m);

3 x y: Add y to all elements in row x (1≤x≤n,1≤y≤10,000);

4 x y: Add y to all elements in column x (1≤x≤m,1≤y≤10,000);

Input

There are multiple test cases. The first line of input contains an integer T(1≤T≤20) indicating the number of test cases. For each test case:

The first line contains three integers n, m and q.

The following n lines describe the matrix M.(1≤Mi,j≤10,000) for all (1≤i≤n,1≤j≤m).

The following q lines contains three integers a(1≤a≤4), x and y.

Output

For each test case, output the matrix M after all q operations.

Sample Input

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

Sample Output

12 13 14 15

1 2 3 4

3 4 5 6

1 10

10 1

Hint

题意

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

1 x y: 交换矩阵\(M\)的第\(x\)行和第\(y\)行\((1 \leq x,y \leq n)\);

2 x y: 交换矩阵\(M\)的第\(x\)列和第\(y\)列\((1 \leq x,y \leq m)\);

3 x y: 对矩阵\(M\)的第\(x\)行的每一个数加上\(y(1 \leq x \leq n,1 \leq y \leq 10,000)\);

4 x y: 对矩阵\(M\)的第\(x\)列的每一个数加上\(y(1 \leq x \leq m,1 \leq y \leq 10,000)\);

题解:

其实这些操作看着麻烦

但是我们都去打个标记就好了

他对于每一行和每一列的操作是分开的,我们对于每一行和每一列打标记就行了。

代码

#include<bits/stdc++.h>
using namespace std;
const int maxn = 1005;
int l[maxn],r[maxn],l1[maxn],r1[maxn];
int a[maxn][maxn];
void solve()
{
int n,m,q;
scanf("%d%d%d",&n,&m,&q);
for(int i=1;i<=n;i++)l1[i]=i,l[i]=0;
for(int i=1;i<=m;i++)r1[i]=i,r[i]=0;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
scanf("%d",&a[i][j]);
for(int i=1;i<=q;i++)
{
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
if(a==1)swap(l1[b],l1[c]);
if(a==2)swap(r1[b],r1[c]);
if(a==3)l[l1[b]]+=c;
if(a==4)r[r1[b]]+=c;
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
if(j==m)printf("%d",a[l1[i]][r1[j]]+l[l1[i]]+r[r1[j]]);
else printf("%d ",a[l1[i]][r1[j]]+l[l1[i]]+r[r1[j]]);
}
printf("\n");
}
}
int main()
{
int t;scanf("%d",&t);
while(t--)solve();
return 0;
}

HDU 5671 Matrix 水题的更多相关文章

  1. hdu 5210 delete 水题

    Delete Time Limit: 1 Sec  Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=5210 D ...

  2. hdu 1251 (Trie水题)

    统计难题 Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 131070/65535 K (Java/Others)Total Submi ...

  3. HDU 5703 Desert 水题 找规律

    已知有n个单位的水,问有几种方式把这些水喝完,每天至少喝1个单位的水,而且每天喝的水的单位为整数.看上去挺复杂要跑循环,但其实上,列举几种情况之后就会发现是找规律的题了= =都是2的n-1次方,而且这 ...

  4. HDU 4493 Tutor 水题的收获。。

    题目: http://acm.hdu.edu.cn/showproblem.php?pid=4493 题意我都不好意思说,就是求12个数的平均数... 但是之所以发博客,显然有值得发的... 这个题最 ...

  5. hdu 4802 GPA 水题

    GPA Time Limit: 20 Sec  Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=4802 Des ...

  6. HDU 5671 Matrix

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

  7. hdu 4493 Tutor 水题

    Tutor Time Limit: 20 Sec  Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=4493 D ...

  8. hdu 5495 LCS 水题

    LCS Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=5495 Descr ...

  9. hdu 4891 模拟水题

    http://acm.hdu.edu.cn/showproblem.php?pid=4891 给出一个文本,问说有多少种理解方式. 1. $$中间的,(s1+1) * (s2+1) * ...*(sn ...

随机推荐

  1. 《secret》读书笔记

    这是在从大连到深圳飞机上看完的一本书,也是大学毕业时室友整理书籍给我的.正好回来的途中,一气呵成读完了. 全书讲了几个事情,其中费了很大篇幅就围绕一个主题,当然书题了——秘密,这个秘密就是“吸引力法则 ...

  2. openjudge-NOI 2.6-1996 登山

    题目链接:http://noi.openjudge.cn/ch0206/1996/ 题解: 正反求两次LIS即可 #include<cstdio> #include<cstring& ...

  3. ECMAScript 6 Promise 对象

    一.Promise的含义 所谓Promise,简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果.从语法上说,Promise是一个对象,从它可以获取异步操作的消息. 1. ...

  4. 头像截图上传三种方式之一(一个简单易用的flash插件)(asp.net版本)

    flash中有版权声明,不适合商业开发.这是官网地址:http://www.hdfu.net/ 本文参考了http://blog.csdn.net/yafei450225664/article/det ...

  5. 在Ubuntu上安装Redis MySQL MongoDB memcached Nginx

    1.安装Redis sudo apt-get install redis-server 2.安装MySQL sudo apt-get install mysql-server 3.安装MongoDB ...

  6. Geoserver WFS跨域设置

    测试版本为geoserver2.11.0. 两种方法都可以实现跨域设置: 第一种: 下载跨域jar包jetty-servlets.jar(下载geoserver使用的对应jetty版本——可以查看&l ...

  7. java并发编程实战笔记---(第二章)线程安全:正确性

    ThreadA__________     同步 ______________ 异步 ___________     异步 ThreadB__________         ____________ ...

  8. 2.4G无线模块NRF2401

    RF24L01+,是工作在2.4~2.5GHz 频段的,具备自动重发功能,6 个数据传输通道,最大无线传输速率为2Mbits.MCU 可与该芯片通过SPI 接口访问芯片的寄存器进行配置,达到控制模块. ...

  9. angular.js 验证码注册登录

    css部分 header{ height: 50px; line-height: 50px; display: flex; } .callback{ text-align: left; display ...

  10. Eclipse的SVN插件与本地SVN客户端关联不上

    问题:当我们用SVN客户端把代码更新到本地,并导入到eclipse之后,却发现我们的SVN插件并没有起作用(没有代码入库.修改等小图标的显示,也没有check in,update等功能菜单).如果我们 ...