SRM 507 DIV1 Easy - CubeStickers

問題


http://community.topcoder.com/stat?c=problem_statement&pm=11315&rd=14436

6面体を与えられた色を使って塗りたい。
ただし、隣り合う面は違う色で塗らなくてはいけない。

使える色の集合が与えられたとき、6面体を塗ることができれば”Yes”、塗れなければ
”No”を返す。

解き方


各色について、2色までであれば反対側の面で使うことができる。
よって各色についてその色の数もしくは2のうちの最小のものを足していき
最後にその数の和が6以上であれば6面体を塗ることができる。

コード


class CubeStickers {

public: string isPossible(vector<string> sticker) {
int n=sticker.size();
map<string,int> m;

FORE(i,0,n)m[sticker[i]]++;

int sum=0;
for(map<string,int>::iterator it=m.begin();it!=m.end();it++){
sum+=min(2,it->second);
}

return sum>=6 ? "YES" : "NO";
}

};

Share this

Related Posts

Previous
Next Post »