1 条题解
-
0
这题数据量比较小,多组数据的清空数组可以直接全部清空也没关系。
数据量比较多的时候可以按照我的代码写的方式,只修改被改变的部分来避免时间超限。
#include <bits/stdc++.h> using namespace std; int t, n; int a[55]; int cnt[10005]; //统计每个数的出现次数 int main() { cin >> t; while (t--) { //输入 cin >> n; a[0] = 0; //用来保证a[0]与a[1]不同 for (int i = 1; i <= n; i++) cin >> a[i]; sort(a + 1, a + n + 1); //让相同的数放在一起 //计数 for (int i = 1; i <= n; i++) cnt[a[i]]++; //统计出现奇数次与偶数次的数的个数 int odd = 0; //多少个数出现次数为奇数次 int even = 0; //多少个数出现次数为偶数次 for (int i = 1; i <= n; i++) { if (a[i] != a[i - 1]) //避免重复计算 { if (cnt[a[i]] % 2 == 0) even++; else odd++; } } //得到答案:每两个出现次数偶数次的数可以各去掉一个来实现都保留 cout << odd + (even / 2 * 2) << "\n"; //清空cnt数组 for (int i = 1; i <= n; i++) cnt[a[i]]--; } return 0; }
- 1
信息
- ID
- 1102
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 6
- 标签
- 递交数
- 27
- 已通过
- 10
- 上传者