链接
A. Planets (贪心)
贪心,记录每一个轨道上面有多少行星,然后比较个数和c.
参考代码:
#include <bits/stdc++.h>
using i64 = long long;
template <typename T>
inline void read(T &f) {
f = 0; T fu = 1; char c = getchar();
while (c < '0' || c > '9') { if (c == '-') { fu = -1; } c = getchar(); }
while (c >= '0' && c <= '9') { f = (f << 3) + (f << 1) + (c & 15); c = getchar(); }
f *= fu;
}
int main() {
int t;
read(t);
//t组测试
while (t--) {
int n, c, ans = 0;
//ans初始化为0
read(n), read(c);
std::vector<int> orbit[101];
//背包形式的vector数组,也可以弄成std::map<int, std::vector<int>> orbit;
std::vector<int> a(n);
for (int i = 0; i < n; i++) {
read(a[i]);
orbit[a[i]].emplace_back(i);
//该行星位于轨道A[i]上面
//emplace_back() 同 push_back()
}
for (int i = 1; i <= 100; i++) {
ans += std::min(c, (int)(orbit[i].size()));
//对于每一个轨道,取最小值累加即可.
}
printf("%d\n", ans);
}
return 0;
}
STL::unordered_map: