演算法訓練 審美課

2021-09-12 23:18:48 字數 1325 閱讀 3400

演算法訓練 審美課  

時間限制:1.0s   記憶體限制:256.0mb

問題描述

《審美的歷程》課上有n位學生,帥老師展示了m幅畫,其中有些是梵谷的作品,另外的都出自五歲小朋友之手。老師請同學們分辨哪些畫的作者是梵谷,但是老師自己並沒有答案,因為這些畫看上去都像是小朋友畫的……老師只想知道,有多少對同學給出的答案完全相反,這樣他就可以用這個資料去揭穿披著皇帝新衣的抽象藝術了(支援帥老師^_^)。

答案完全相反是指對每一幅畫的判斷都相反。

輸入格式

第一行兩個數n和m,表示學生數和圖畫數;

接下來是乙個n*m的01矩陣a:

如果aij=0,表示學生i覺得第j幅畫是小朋友畫的;

如果aij=1,表示學生i覺得第j幅畫是梵谷畫的。

輸出格式

輸出乙個數ans:表示有多少對同學的答案完全相反。

樣例輸入

3 21 0

0 11 0

樣例輸出

樣例說明

同學1和同學2的答案完全相反;

同學2和同學3的答案完全相反;

所以答案是2。

資料規模和約定

對於50%的資料:n<=1000;

對於80%的資料:n<=10000;

對於100%的資料:n<=50000,m<=20。

題解:只有01兩種狀態,又要找出不同的對數,就需要用到異或^,異或就是相同為0,不同為1,1^1=0,0^0=0,1^0=1,0^1=1,相當於不進製的加法,這道題給出了最多20位,把它們轉換成十進位制,在進行異或,標記累加,最後當前出現的數標記累加(為什麼要異或?這裡這樣理解:因為轉成十進位制後的當前num和要和num完全相反的數組成一隊,異或每一位都是1的數就能找到當前num相反的數,如10110^11111=01001     根據異或相當於不進製的二進位制加法01001就和10110相反

#includeusing namespace std;

#define n 2^20 //1048576

int n,m,a[1048576],ans;

int main()

ans+=a[xx^num]; //當前num與xx異或,表示當前num和xx^num組成一隊完全相反的數,累加到ans上

a[num]++; //當前num個數+1

演算法訓練 審美課

問題描述 審美的歷程 課上有n位學生,帥老師展示了m幅畫,其中有些是梵谷的作品,另外的都出自五歲小朋友之手。老師請同學們分辨哪些畫的作者是梵谷,但是老師自己並沒有答案,因為這些畫看上去都像是小朋友畫的 老師只想知道,有多少對同學給出的答案完全相反,這樣他就可以用這個資料去揭穿披著皇帝新衣的抽象藝術了...

演算法訓練 審美課

時間限制 1.0s 記憶體限制 256.0mb 審美的歷程 課上有n位學生,帥老師展示了m幅畫,其中有些是梵谷的作品,另外的都出自五歲小朋友之手。老師請同學們分辨哪些畫的作者是梵谷,但是老師自己並沒有答案,因為這些畫看上去都像是小朋友畫的 老師只想知道,有多少對同學給出的答案完全相反,這樣他就可以用...

演算法訓練 審美課

問題描述 審美的歷程 課上有n位學生,帥老師展示了m幅畫,其中有些是梵谷的作品,另外的都出自五歲小朋友之手。老師請同學們分辨哪些畫的作者是梵谷,但是老師自己並沒有答案,因為這些畫看上去都像是小朋友畫的 老師只想知道,有多少對同學給出的答案完全相反,這樣他就可以用這個資料去揭穿披著皇帝新衣的抽象藝術了...