森林中的兔子数
某些兔子将告诉你多少兔子和它同色,问总共最少有多少兔子?
int numRabbits(vector<int>& answers) {
// 数x每组有x+1个,共有ceil(count[x]/(x+1)) = (count[x]+x)/(x+1)组,
// 所以报数x的兔子数为 (count[x]+x)/(x+1)*(x+1)
unordered_map<int, int> count;
for (int num : answers) count[num]++;
int ans = 0;
for (auto &e : count) {
int x = e.first;
ans += (count[x] + x) / (x + 1) * (x + 1);
}
return ans;
}