読者です 読者をやめる 読者になる 読者になる

るくすの日記 ~ Out_Of_Range ~

主にプログラミング関係

SRM 543 Div2

250: EllysTSP

訪れる順番は気にしなくて良いので、普通にやるだけ。


class EllysTSP {
public:
  int visit(int s,string p){
    int ret = 1;
    bool flag[100];
    memset(flag,0,sizeof(flag));
    int now = s;
    flag[s] = true;
    while(true){
      bool update = false;
      rep(i,p.size()){
	if(p[now] == 'C' && p[i] == 'V' && !flag[i]){
	  now = i;ret++;update = true;
	  flag[now] = true;
	  break;
	}
	if(p[now] == 'V' && p[i] == 'C' && !flag[i]){
	  now = i;ret++;update = true;
	  flag[now] = true;
	  break;
	}
      }
      if(!update) break;
    }
    return ret;
  }
  int getMax(string places) {
    int result = 0;
    rep(i,places.size())
      result = max(result,visit(i,places));
      
    return result;
  }
};



500: EllysXors

BITとかいろいろ考えたけど、どれも無理そう... 何か規則性ありそうだけど分からない。

Wiki(SRM 543 - TopCoder Wiki)読みました。

class EllysXors {
public:
  ll f(ll x){
    if(x < 0) return 0;
    if(x % 4 == 0) return x;
    if(x % 4 == 1) return 1;
    if(x % 4 == 2) return x + 1;
    return 0;
  }
  long long getXor(long long L, long long R) {
    return f(L - 1) ^ f(R);
  }
};