怠惰の累積和

技術/競プロ/怪文書/虚無

AtCoder Regular Contest 004 B - 2点間距離の最大と最小 ( Maximum and Minimum )

問題概要

 2次元平面上のN+1個の点について、i番目とi+1番目(1≦i≦N-1)の点の間の距離が分かっている。この時の0番目の点とN番目の点の距離について考え得るmaxとminを求めよ。

atcoder.jp

 

解法

 まず、maxは明らかに\displaystyle \sum_{i=0}^{N-1} d_i 

 様々なところで言及されているが、入力をソートしても一般性を失わない場合、とりあえずソートしてみると良かったり悪かったりするので降順ソートする。

 すると、例えば1番目の点が移動可能な範囲は0番目の点を中心とした、半径d_1の円周上である。

 これを拡張して考えるとminは、
\begin{eqnarray}
\left\{
\begin{array}{l}
0(d_0≦\displaystyle \sum_{i=1}^{N-1} d_i) \\
d_0-\displaystyle \sum_{i=1}^{N-1} d_i(otherwise)
\end{array}
\right.
\end{eqnarray}

となる。これを実装して、AC。O(NlogN)

atcoder.jp