問題描述
《審美的歷程》課上有n位學生,帥老師展示了m幅畫,其中有些是梵谷的作品,另外的都出自五歲小朋友之手。老師請同學們分辨哪些畫的作者是梵谷,但是老師自己並沒有答案,因為這些畫看上去都像是小朋友畫的……老師只想知道,有多少對同學給出的答案完全相反,這樣他就可以用這個資料去揭穿披著皇帝新衣的抽象藝術了(支援帥老師_)。
答案完全相反是指對每一幅畫的判斷都相反。
輸入格式
第一行兩個數n和m,表示學生數和圖畫數;
接下來是乙個n*m的01矩陣a:
如果aij=0,表示學生i覺得第j幅畫是小朋友畫的;
如果aij=1,表示學生i覺得第j幅畫是梵谷畫的。
輸出格式
輸出乙個數ans:表示有多少對同學的答案完全相反。
樣例輸入
3 21 0
0 11 0
樣例輸出
2樣例說明
同學1和同學2的答案完全相反;
同學2和同學3的答案完全相反;
所以答案是2。
資料規模和約定
對於50%的資料:n<=1000;
對於80%的資料:n<=10000;
對於100%的資料:n<=50000,m<=20。
思路
開倆個陣列,乙個陣列放m個0,1組成的碼,稱之為答案碼。有n個同學,故答案碼陣列長度為n;
另乙個陣列表達這些答案碼對應的個數。將答案碼作為下標,個數作為陣列值可以完成這種表達,故這個陣列下標為答案碼陣列的值,答案碼陣列最大值為m個1,m最大為20。即最最大就是20個1。
對每個答案按位取反,得到f,以f為下標檢索第二個陣列,取出陣列的值。
因為是每個答案操作,像是一面鏡子,所以結果/2。
#include
using
namespace std;
intmain()
ansnum[ta[i]]++
;//陣列值為答案的個數,陣列下標為答案的內容
}int f,num=0;
int max=(1
<
;for
(i=0
;i)printf
("%d\n"
,num/2)
;return0;
}
ps:執行錯誤,說明你邏輯沒問題,多半是下標越界的原因,注意檢查下標
錯誤,是邏輯有問題
演算法訓練 審美課
問題描述 審美的歷程 課上有n位學生,帥老師展示了m幅畫,其中有些是梵谷的作品,另外的都出自五歲小朋友之手。老師請同學們分辨哪些畫的作者是梵谷,但是老師自己並沒有答案,因為這些畫看上去都像是小朋友畫的 老師只想知道,有多少對同學給出的答案完全相反,這樣他就可以用這個資料去揭穿披著皇帝新衣的抽象藝術了...
演算法訓練 審美課
時間限制 1.0s 記憶體限制 256.0mb 審美的歷程 課上有n位學生,帥老師展示了m幅畫,其中有些是梵谷的作品,另外的都出自五歲小朋友之手。老師請同學們分辨哪些畫的作者是梵谷,但是老師自己並沒有答案,因為這些畫看上去都像是小朋友畫的 老師只想知道,有多少對同學給出的答案完全相反,這樣他就可以用...
演算法訓練 審美課
問題描述 審美的歷程 課上有n位學生,帥老師展示了m幅畫,其中有些是梵谷的作品,另外的都出自五歲小朋友之手。老師請同學們分辨哪些畫的作者是梵谷,但是老師自己並沒有答案,因為這些畫看上去都像是小朋友畫的 老師只想知道,有多少對同學給出的答案完全相反,這樣他就可以用這個資料去揭穿披著皇帝新衣的抽象藝術了...