題目描述
小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,同種反應不會出現多次。輸入的一張圖可能有多個不同的連通塊,而每個不同的連通塊之間互不影響,且每個 不同連通塊中加入的第一種...