标签:
|
MatrixTime Limit: 3000/1500 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Total Submission(s): 311 Accepted Submission(s): 142
Problem Description
There is a matrix
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
The first line contains three integers The following The following
Output
For each test case, output the matrix
Sample Input
Sample Output
Source
|
有一个n行m列的矩阵(1≤n≤1000,1≤m≤1000),在这个矩阵上进行q (1≤q≤100,000) 个操作: 1 x y: 交换矩阵M的第x行和第y行(1≤x,y≤n); 2 x y: 交换矩阵M的第x列和第y列(1≤x,y≤m); 3 x y: 对矩阵M的第x行的每一个数加上y(1≤x≤n,1≤y≤10,000); 4 x y: 对矩阵M的第x列的每一个数加上y(1≤x≤m,1≤y≤10,000);
输入包含多组数据. 第一行有一个整数T(1≤T≤15), 表示测试数据的组数. 对于每组数据: 第一行输入3个整数n, m, q. 接下来的n行,每行包括m个整数,表示矩阵M。(1≤M?i,j??≤10,000),(1≤i≤n,1≤j≤m). 最后q行,每行输入三个整数a(1≤a≤4), x, y。
对于每组数据,输出经过所有q个操作以后的矩阵M。解题思路:
对于交换行、交换列的操作,分别用两个列数组和行数组记录当前状态下每一行、每一列是原始数组的哪一行、哪一列即可。对每一行、每一列加一个数的操作,也可以两个数组分别记录。注意当交换行、列的同时,也要交换增量数组。输出时通过索引找到原矩阵中的值,再加上行、列的增量。复杂度O(q+mn),注意一下输出的时候最后一列后边没有空格(我就被这个坑了)。。。
My Code:
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> using namespace std; const int MAXN = 1000+5; typedef long long LL; int arr[MAXN][MAXN]; int h[MAXN],l[MAXN];///h:行,l:列 int r[MAXN],c[MAXN]; int main() { int n, m, T, q; scanf("%d",&T); while(T--) { scanf("%d%d%d",&m,&n,&q); for(int i=1; i<=m; i++) h[i] = i; for(int i=1; i<=n; i++) l[i] = i; for(int i=1; i<=m; i++) for(int j=1; j<=n; j++) scanf("%d",&arr[i][j]); memset(r, 0, sizeof(r)); memset(c, 0, sizeof(c)); while(q--) { int x, y, num; scanf("%d%d%d",&num,&x,&y); if(num == 1) swap(h[x],h[y]); else if(num == 2) swap(l[x],l[y]); else if(num == 3) r[h[x]] += y; else if(num == 4) c[l[x]] += y; } for(int i=1; i<=m; i++) { for(int j=1; j<n; j++) { int ans = arr[h[i]][l[j]] + r[h[i]] + c[l[j]]; printf("%d ",ans); } printf("%d\n",arr[h[i]][l[n]] + r[h[i]] + c[l[n]]); } } return 0; }
HDU 5671 Matrix (BestCoder Round #81 (div.2) 1002)
标签:
原文地址:http://blog.csdn.net/qingshui23/article/details/51224859