审美课

mac2025-07-09  8

题目

审美课

分析

用一个数组 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;// 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; }
最新回复(0)