题目
审美课
分析
用一个数组 a 存储每个人的答案,用 num 数组存储该答案出现的次数。再次遍历 a 数组,每个人的答案取反,累加 num 该答案在出现的次数,最后除以 2 就是答案。
AC代码
#include <iostream>
#include <cstdio>
using namespace std
;
int a
[50005], num
[1 << 20];
int main()
{
int n
, m
;
scanf("%d%d", &n
, &m
);
for (int i
= 0; i
< n
; i
++)
{
for (int j
= 0; j
< m
; j
++)
{
int x
;
scanf("%d", &x
);
a
[i
] = (a
[i
] << 1) + x
;
}
num
[a
[i
]]++;
}
int MAX
= (1 << m
) - 1;
int ans
= 0;
for (int i
= 0; i
< n
; i
++)
{
int temp
= a
[i
] ^ MAX
;
ans
+= num
[temp
];
}
ans
/= 2;
printf("%d\n", ans
);
return 0;
}
转载请注明原文地址: https://mac.8miu.com/read-504462.html