小X的矩陣

2021-08-28 09:06:08 字數 1301 閱讀 3099

題目描述

小x最近迷上了矩陣,他定義了乙個對於一種特殊矩陣的特徵函式g。對於n*n的矩陣a,a的所有元素均為0或1,則g(a)等於所有a[i][j]*a[j][i]的和對2取餘之後的結果。舉乙個例子:

對於上圖這個3 * 3矩陣a,g(a)=(1 * 1 + 1 * 0 + 1 * 1 + 0 * 1 + 1 * 1 + 1 * 0 + 1 * 1 + 0 * 1 + 0 * 0) mod 2=0

當然詢問乙個矩陣的g值實在是太簡單了。小x在給出乙個n*n矩陣的同時將給你q個操作,操作描述如下:

操作1:形如乙個整數1和乙個整數x,表示將第x行的元素全部「翻轉」。

操作2:形如乙個整數2和乙個整數x,表示將第x列的元素全部「翻轉」。

操作3:形如乙個整數3,表示詢問當前矩陣的特徵值g。

「翻轉」的定義為將1變成0,將0變成1。

輸入第1行:兩個正整數n,q。 n表示矩陣的行數(列數),q表示詢問的個數。

接下來n行:乙個n*n的矩陣a,0<=a[i][j]<=1。

接下來q行:q個操作。

輸出一行若干個數,中間沒有空格,分別表示每個操作的結果(操作1和操作2不需要輸出)。

輸入樣例

3 12

1 1 1

0 1 1

1 0 0

32 3

32 2

2 21 333

1 22 1

1 13

輸出樣例

01001

說明30% n<=100, q<=10^5

100% n<=1,000, q <=5*10^5..

...分析

我們可以發現:a[i][j]*a[j][i]+a[j][i]*a[i][j] 對於答案毫無意義

因此,答案為矩陣的 右上至左下 的對角線的g值

對於乙個操作,無論它是在哪一行哪一列,它都會對線上的乙個值(只有乙個)進行影響,那麼每次只需將答案取反即可。..

...程式:

#include#includeusing namespace std;

inline int read()

while (ch>='0'&&ch<='9')

return s*w;

}int main()

for (int i=1;i<=q;i++) }

return 0;

}

規律 模擬 小X的矩陣

小x最近迷上了矩陣,他定義了乙個對於一種特殊矩陣的特徵函式g。對於nn的矩陣a,a的所有元素均為0或1,則g a 等於所有a i j a j i 的和對2取餘之後的結果。舉乙個例子 對於上圖這個33矩陣a,g a 11 10 11 01 11 10 11 01 00 mod 2 0 當然詢問乙個矩陣...

小X的質數

題目描述 在小x的認知裡,質數是除了本身和1以外,沒有其他因數的數。但由於小x對質數的熱愛超乎尋常,所以小x同樣喜歡那些雖然不是質數,但卻是由兩個質數相乘得來的數。於是,我們定義乙個數小x喜歡的數,當且僅其是乙個質數或是兩個質數的乘積。輸入 第一行輸入個正整數q,表示詢問的組數。接下來q行,包含兩個...

小 X 的液體混合

example mixture.in 3 21 2 2 3mixture.out 4scoring 對於 30 的資料,n 10。對於 100 的資料,1 n 1000,a b,同種反應不會出現多次。輸入的一張圖可能有多個不同的連通塊,而每個不同的連通塊之間互不影響,且每個 不同連通塊中加入的第一種...