アルゴリズム忘備録

競技プログラミングとかデータ分析とか

B: Moderate Differences - AtCoder Grand Contest 017

agc017.contest.atcoder.jp

 

長さNの数列を構成したい。最初と最後の要素がA, Bで与えられる。また、隣り合う要素同士の差はC以上D以下になるようにしたい。このような構成は可能か?

 

最初の要素を除くN-1個の要素について、k個が前の要素以上、N-1-k個が前の要素以下と仮定してもよい。その時、kを固定すると、最後の要素Bとして可能な値の範囲は次のようになる。

A + kC - (N-1-k)D <= B <= A + kD - (N-1-k)C

与えられたBがこの条件を満たすなら構成が可能。O(N)。