1 条题解
-
0
C++ :
#include<bits/stdc++.h> using namespace std; /* 题意:有n个数,要求修改其中部分数字,使得数字种类数不超过k种。 思路: 1. 统计数字种类数 c,如果 c <= k,不需要修改。 2. 如果 c > k,修改 c - k 种数,将出现次数最少的 c - k 种数修改。 */ int cnt[200010]; int n, k, x, c = 0; int main() { cin >> n >> k; for (int i = 1; i <= n; i++) { cin >> x; cnt[x]++; if (cnt[x] == 1) c++; // 统计数字种类数 } // 如果本身不超过 k 种,不需要修改 if (c <= k) { cout << 0; return 0; } // 将每种数出现次数排序 // 注意: 8 会在最前面 sort(cnt + 1, cnt + n + 1); // 从出现次数不为 0 的数字中,找到 c - k 种数 int ans = 0; int t = 0; // 统计修改的种类数 for (int i = 1; i <= n; i++) { ans += cnt[i]; if (cnt[i] != 0) t++; if (t == c - k) break; } cout << ans; return 0; }
- 1
信息
- ID
- 1019
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 10
- 标签
- 递交数
- 3
- 已通过
- 3
- 上传者