HDOJ 5671-Matrix【矩阵的变换】
2016-05-17 11:47
363 查看
Matrix
Time Limit: 3000/1500 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Total Submission(s): 1049 Accepted Submission(s): 434
[align=left]Problem Description[/align]
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);
[align=left]Input[/align]
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.
[align=left]Output[/align]
For each test case, output the matrix
M
after all q
operations.
[align=left]Sample Input[/align]
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
[align=left]Sample Output[/align]
12 13 14 15 1 2 3 4 3 4 5 6 1 10 10 1 Hint Recommand to use scanf and printf
[align=left]Source[/align]
BestCoder Round #81 (div.2)
解题思路:
题目大意:
有一个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);
对于矩阵来说,我们把他输出的坐标顺序记录下就行了。行和列都要记录。
#include<cstdio> #include<cstring> #include<algorithm> #define LL long long using namespace std; struct node { LL wei; LL bei; }num[1005]; struct node2 { LL lie; LL bb; }numline[1005]; LL map[1005][1005]; void init(LL n,LL m) { for(LL i=1;i<=n;i++) { num[i].wei=i; num[i].bei=0; } for(LL i=1;i<=m;i++) { numline[i].lie=i; numline[i].bb=0; } } int main() { int t; scanf("%d",&t); while(t--) { LL n,m,p; scanf("%lld%lld%lld",&n,&m,&p); init(n,m); for(LL i=1;i<=n;i++) { for(LL j=1;j<=m;j++) { scanf("%lld",&map[i][j]); } } while(p--) { LL biao,xx,yy; scanf("%lld%lld%lld",&biao,&xx,&yy); if(biao==1) { node tt; tt=num[xx]; num[xx]=num[yy]; num[yy]=tt; } else if(biao==2) { node2 tt; tt=numline[xx]; numline[xx]=numline[yy]; numline[yy]=tt; } else if(biao==3) { num[xx].bei+=yy; } else { numline[xx].bb+=yy; } } for(LL i=1;i<=n;i++) { for(LL j=1;j<=m;j++) { if(j==1) printf("%lld",map[num[i].wei][numline[j].lie]+num[i].bei+numline[j].bb); else printf(" %lld",map[num[i].wei][numline[j].lie]+num[i].bei+numline[j].bb); } printf("\n"); } } return 0; }
相关文章推荐
- 一名传智播客普通员工的心声:我骄傲,我是传智人
- LeetCode 220 Contains Duplicate III
- Maven入门指南⑤:使用Nexus搭建Maven私服
- iOS设计模式(二) 简单工厂,工厂,抽象工厂
- GetSystemTime,GetLocalTime,GetCurrentTime
- spring mvc 4+ @ResponseBody 中文乱码
- [Java] 实验11
- 获取使用nginx代理后的真实IP地址
- 散步的路上
- Spring之框架初探
- 05-IP核应用之计数器——小梅哥FPGA设计思想与验证方法视频教程配套文档
- Unity3D编辑器插件编写
- Maven入门指南④:仓库
- 美团商家分类菜单
- std::map find 陷阱
- 阅读笔记08
- RT-Thread的CPU使用率计算
- 苹果下如果安装nginx,给nginx安装markdown第三方插件
- HDU1054 Strategic Game(二分匹配)
- C#清除WebBrowser中Cookie缓存的方法