SRM 569 DIV1 Easy - TheDevice (復習○)

問題


http://community.topcoder.com/stat?c=problem_statement&pm=12388&rd=15489

プレートの問題の応用。
各ビットごとに、XOR,AND,ORいずれかの動作をするデバイスがある。
またビットの和で構成されているプレートがいくつか与えられている。
このとき、各ビットのデバイスがどの動作をしているか判定するために
追加で必要なプレートの数を求める。

解き方


各ビットに1,1,0があればよい。
足りない場合は、各ビットごとに足りない数を求め、その最大値を返してあげればよい。

コード


class TheDevice {

public: int minimumAdditional(vector<string> plates) {
int cost=0;

FORE(j,0,plates[0].size()){
int one=0,zero=0;
FORE(i,0,plates.size()){
if(plates[i][j]=='1')one++;
else zero++;
}
int tmp=3-min(2,one)-min(1,zero);
cost=max(cost,tmp);
}
return cost;
}

};
このエントリーをはてなブックマークに追加