るくすの日記 ~ Out_Of_Range ~

主にプログラミング関係

SRM 536 Div2

250: BinaryPolynomialDivTwo

やるだけ pow関数でTCのコンパイラがエラーを吐きまくって謎

class BinaryPolynomialDivTwo {
public:
  int countRoots(vector <int> a) {
    int p = 0,p2 = 0;
    rep(i,a.size()){
      p += a[i] * (int)pow(0.,i);
      p2 += a[i] * (int)pow(1.,i);
    }
    int res = (p % 2 == 0) + (p2 % 2 == 0);
    return res;
  }

};

500: RollingDiceDivTwo

各回ごとにサイコロの最大値を求めて、なるべく大きな数字を面の多いサイコロの目にしていったら通った

class RollingDiceDivTwo {
public:
  int minimumFaces(vector <string> rolls) {
    bool used[100][100];
    memset(used,0,sizeof(used));
    int res = 0;
    rep(i,rolls[0].size()){
      int mxc = 0;
      rep(i,rolls.size()){
	string tmp = rolls[i];
	int mx = 0,mx_t = 0;
	rep(j,tmp.size()){
	  if(!used[i][j]){
	    if(tmp[j] - '0' >= mx)
	      mx_t = j,mx = tmp[j] - '0';
	  }
	}
	used[i][mx_t] = true;
	mxc = max(mxc,mx);
      }
      res += mxc;
    }
    return res;
  }
};