HDU 5671 Matrix
来源:互联网 发布:ec软件下载 编辑:程序博客网 时间:2024/05/21 11:12
Matrix
Time Limit: 3000/1500 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Total Submission(s): 477 Accepted Submission(s): 207
Problem 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) ;
1 x y: Swap row x and row y
2 x y: Swap column x and column y
3 x y: Add y to all elements in row x
4 x y: Add y to all elements in column x
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 integersn , m and q .
The followingn lines describe the matrix M.(1≤Mi,j≤10,000) for all (1≤i≤n,1≤j≤m) .
The followingq lines contains three integers a(1≤a≤4) , x and y .
The first line contains three integers
The following
The following
Output
For each test case, output the matrix M after all q operations.
Sample Input
23 4 21 2 3 42 3 4 53 4 5 61 1 23 1 102 2 21 1010 11 1 22 1 2
Sample Output
12 13 14 151 2 3 43 4 5 61 1010 1HintRecommand to use scanf and printf题意:给你几种操作,对矩阵进行一系列操作后,输出最后的矩阵。有4种操作:交换x,y列,交换x,y行,x行增加y,x列增加y。思路:对每行每列,记录它实际的行和列,还有增量。最后直接实际的位置加增量就好。#include<iostream>#include<algorithm>#include<cstdio>#include<queue>#include<map>#include<vector>#include<cstring>#include<cmath>using namespace std;typedef long long ll;const ll INF = 0x3f3f3f3f;const double pi = acos(-1.0);const ll N = 1e3 + 10;int mat[N][N];ll ans[N][N];struct node{ int root; ll add;} line[N], cal[N];int main(){ int t; cin>>t; while(t--) { int n, m, q; scanf("%d%d%d", &n, &m, &q); for(int i = 0; i<n; i++) line[i].root = i, line[i].add = 0LL; for(int j = 0; j<m; j++) cal[j].root = j, cal[j].add =0LL; for(int i = 0; i<n; i++) for(int j = 0; j<m; j++) scanf("%d", &mat[i][j]); int x, y, a; while(q--) { scanf("%d%d%d", &a, &x, &y); --x; if(a == 1) { --y; swap(line[x], line[y]); } if(a == 2) { --y; swap(cal[x], cal[y]); } if(a == 3) { //--y; line[x].add+=y; } if(a == 4) { cal[x].add+=y; } } for(int i = 0; i<n; i++) for(int j = 0; j<m; j++) { ans[i][j] = mat[line[i].root][cal[j].root] + line[i].add + cal[j].add; } for(int i = 0; i<n; i++) { for(int j = 0; j<m; j++) { if(j == 0) printf("%I64d", ans[i][j]); else printf(" %I64d", ans[i][j]); } printf("\n"); } } return 0;}
0 0
- HDU 5671 Matrix
- hdu 5671 Matrix(模拟)
- HDU 5671 Matrix
- HDU 5671 Matrix
- HDU 5671:Matrix【技巧】
- HDU 5671 Matrix
- hdu 5671 Matrix【思维】
- HDU 5671 Matrix
- hdu 5671 Matrix
- HDU-5671 Matrix
- hdu 5671 (Matrix)
- hdu 5671 Matrix
- HDU 5671 Matrix
- HDU 5671 Matrix (矩阵操作)
- 【HDU 杭电 5671 Matrix】
- Matrix HDU
- hdu 5671 Matrix(矩阵行列交换)
- [hdu 5671][BestCoder Round #81 t2] Matrix
- 为什么虚拟现实视频看上去那么粗糙?
- 关于落点偏差的疑惑
- BestCoder Round #81
- 重新学javaweb---ServletContext
- jquery中detach()和remove()区别
- HDU 5671 Matrix
- java 基础题 信号报告
- 使用Intent 传递对象
- 重新开始,期待涅槃重生
- 关于cocoa pods安装的那些事
- HTTP长连接与短连接
- 坏盘导致Kafka故障一例
- 类的继承、拷贝构造函数
- 编程之美之数组分割