mayoko’s diary

プロコンとかいろいろ。

SRM 499 div1 easy:ColorfulRabbits

SRM練習会に参加。結果はeasyとmed通してgood job!という感じでした。なんか昔のSRMは今より簡単な気がするしhardにトライしてみるのもありかもしれないです。

問題:TopCoder Statistics - Problem Statement

解法:問題の性質上,同じ数を主張しているウサギは同色であると解釈できます。ただし,example 2のように,2と主張しているウサギが7匹いる場合は,同色のウサギが3匹であると主張しているのに7匹が同じグループになるというおかしな状況になるので,グループ数を増やさないと矛盾します。そこら辺に注意して実装すれば良いです。
以下ソースコード

class ColorfulRabbits {
public:
    int getMinimum(vector <int> replies) {
        map<int, int> mm;
        for (auto el : replies) {
            mm[el]++;
        }
        int ans = 0;
        for (auto el : mm) {
            int tmp = el.first+1;
            int tmp2 = el.second;
            while (tmp2 > tmp) {
                ans += tmp;
                tmp2 -= tmp;
            }
            ans += tmp;
        }
        return ans;
    }
};