小m有乙個n*m的方格,行列下標均從0開始。其中有k個方格中有數字,表示為(x, y)方格中有數字c。對方格有2種操作,交換方格的兩行或者交換方格的兩列。
小m希望隨時能夠知道在經過一系列交換之後某一方格中是否含有數字,並且如果有的話,數字是多少。
輸入資料第一行包含3個整數n, m, k。表示n行m列的方格,並且其中k個方格有數字。(1 <= n, m <= 10^5, 0 <= k <= 10^5)
接下來k行,每行有3個整數,x, y, c,表示(x,y)方格中有數字c。
(0 <= x <= n - 1, 0 <= y <= m - 1, 1 <= c <= 1000)
接下來有乙個整數t,表示有t次操作或詢問。(0 <= t <= 10^5)
接下來t行,買行有三個整數q, a, b。
當q == 0時,交換行a和行b所有方格。
當q == 1時,交換列a和列b所有方格。
當q == 2時,詢問(a, b)是否有數字,如果有則輸出該數字,如果沒有輸出-1。
資料保證q,a,b均在合法的範圍之內。
對於每個詢問,輸出乙個整數表示其答案。示例1
複製
3 3 2複製1 1 1
2 2 2
52 1 1
0 0 1
1 0 1
2 1 1
2 2 2
1-12
首先有3x3的方格,其中(1,1)有數字1,(2,2)有數字2,即:#include using namespace std;-1 -1 -1
-1 1 -1
-1 -1 2
5次操作,
第一次查詢(1,1)得到1;
第二次交換行1和行2,即:
-1 1 -1
-1 -1 -1
-1 -1 2
第三次交換列1和列2,即:
1 -1 -1
-1 -1 -1
-1 -1 2
第四次查詢(1,1)得到-1;
第五次查詢(2,2)得到2;
unordered_mapdic;
int main(void)
for (int i = 0; i < m; ++i)
for(int i = 0; i < k; i++)
cin >> t;
while(t--) else if(q == 0) else
}return 0;}
二維陣列行列調換
將二維陣列中的行列互調顯示出來 首先來看乙個3 3的陣列 1 2 3 4 5 6 7 8 9 行列轉換後 1 4 7 2 5 8 3 6 9 看到上面這倆可以發現對角線上的數是不動的 發生變化的數只有 2 3 6 4 7 8 用二維陣列表示 0 1 0 2 1 2 由陣列能發現 0 橫行 1 0 2...
二維陣列建立以及新增行列索引的方法
列表 a pd.dataframe np.arange 10 reshape 2,5 index list ab columns list qwxyz print a 字典 temp dict a pd.dataframe temp dict print a a for i in range 3 f...
C 二維陣列索引
int a new int 3,3 a 1,1 10 for int i 0 i a.rank i debug.log math.abs a 1,1 大括號 表示行 逗號,表示列int row array.rank 獲取維數,這裡指行數 int col array.getlength 1 獲取指定維...