問題
http://community.topcoder.com/stat?c=problem_statement&pm=11327&rd=14428
様々な種類のうさぎがいる。
そのうちいくつかのうさぎに質問し、自分以外に同じ種類のうさぎが何匹いるか
答えている。
このとき、うさぎの総数について、矛盾しないような最小の数を求める。
解き方
同じ数xを答えたうさぎについて、x+1匹まで同じ種類二まとめられる。
答えたすべての数xについて、上記から計算できる最小のうさぎの総数を
求める。
コード
class ColorfulRabbits {
public: int getMinimum(vector<int> replies) {
int n=replies.size();
int used[n];
memset(used,0,sizeof(used));
long long ret=0;
FORE(i,0,n)if(!used[i]){
int cnt=0;
FORE(j,0,n)if(replies[i]==replies[j]){
cnt++;
used[j]=1;
}
long long x=replies[i]+1;
ret+=x*((cnt+x-1)/x);
}
return ret;
}
};
public: int getMinimum(vector<int> replies) {
int n=replies.size();
int used[n];
memset(used,0,sizeof(used));
long long ret=0;
FORE(i,0,n)if(!used[i]){
int cnt=0;
FORE(j,0,n)if(replies[i]==replies[j]){
cnt++;
used[j]=1;
}
long long x=replies[i]+1;
ret+=x*((cnt+x-1)/x);
}
return ret;
}
};