Entries

スポンサーサイト (この記事を編集する[管理者用])

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

コメント

コメントの投稿

コメントの投稿
管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://rsujskf.blog32.fc2.com/tb.php/2034-4a815561
この記事にトラックバックする(FC2ブログユーザー)

SRM507 DIV1 EASY/DIV2 MEDIUM - CubeStickers (この記事を編集する[管理者用])

Source

TopCoder SRM507 DIV1 EASY (250pt)
TopCoder SRM507 DIV2 MEDIUM (500pt)
Problem Statement
SRM507 DIV1 自分の参加記録

問題概要

6個以上50個以下の同じサイズの正方形がある.その色が与えられる.
立方体を1個作りたいのだけど,隣り合う面の色は異なるようにしたい.
そのようにできるか判定する問題.

解法

同じ色が2個以上あっても,2個までしか使えない.
後は,使えるのが6個以上あれば作れる.

C++によるスパゲッティなソースコード
// #includeとusing namespace std;は略

#define REP(i,a,b) for(i=a;i<b;i++)
#define rep(i,n) REP(i,0,n)

class CubeStickers {
public:
string isPossible(vector <string> in) {
  int i,j,k;
  map<string,int> mp;
  map<string,int>::iterator it;
  int num[100], n;

  rep(i,in.size()) mp[in[i]]++;

  rep(i,100) num[i] = 0; n = 0;
  for(it = mp.begin(); it != mp.end(); it++){
    num[n++] = (*it).second;
  }

  rep(i,n) if(num[i] > 2) num[i] = 2;
  k = 0;
  rep(i,n) k += num[i];

  if(k>=6) return "YES";
  return "NO";
}

};

コメント

コメントの投稿

コメントの投稿
管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://rsujskf.blog32.fc2.com/tb.php/2034-4a815561
この記事にトラックバックする(FC2ブログユーザー)

Appendix

Recent Articles

ブログ内検索

Ads


(プライバシーポリシー)
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。