Single Round Match 413 Div1

今回からDiv1で戦うことになりました。うは、みんな青とか黄色とか赤だ(当たり前)
ここにいる全員が僕よりコードの書ける人だと思うとなんかすごいな。

500点問題、回答した18人のうち14人がチャレンジされて落とされている。僕を含む。一見簡単なように思えて、見えにくい所に落とし穴があるのか。ちなみに僕の解答:

  int P, Q, X, Y;
  map<long long, long long> cache;
  long long calc(long long n, int p, int q, int x, int y) {
    P = p; Q = q; X = x; Y = y;
    return calc(n);
  }
  long long calc(long long n){
    if(n <= 0) return 1;
    if(cache.find(n) != cache.end()){
      return cache[n];
    }
    long long t1 = n / P - X, t2 = n / Q - Y;
    return cache[n] = calc(t1) + calc(t2);    
  }

落ちてない人のコードを見たらlong long cache[1000000]とかやってるなぁ。

        • -

キャッシュをmapじゃなくてlong long[1000000]に変えたらシステムテスト通った。うーむ。mapは避けるべきか。

        • -

250点問題しか解けていないのにレーティングが120くらい上がった。しばらくは250点問題を着実に解くことを目指せばいいのかな。250と500を着実に解くだけで黄色をキープできるらしいし。