TopCoder SRM 648
2015-02-02 | [Competitive programming]250
K が最大になるのは A…AB…B みたいになっているとき (A, B はほぼ同じ数) である。 最初に A をたくさん置いておいて、残りの K を減らす方針で B を適当なところに入れて文字列を構成する。
550
N, K が小さければ、「今買うときの値段が最安なものを買う」を繰り返す greedy で解ける。
商品 1 を買う個数を求めたあと、次の商品 1 を買わない範囲でどの値段のものを買うかを求める。 ここで、その範囲では同じ商品を高々 1 個しか買わないことに注意すると、値段を決めればあと何個買えるかは簡単に計算できるので、 二分探索が使える。
850
OEIS を使っていろいろ調べて試したけど解けなかった
結果
challenge できない><
250, 550 両方通った
240.60 + 312.62 = 553.22 (8 位)
rating: 2990 -> 3017 target 復帰!!