準線形クエリ時間を使用して、合計が
これが最近傍問題です。 実数(非常に大きいn!)にターゲットの実数pを加え、SUMがpに最も近いa iとa jを見つけます。当社は、合理的な前処理/インデックス許可1、... 、nは(最大Oを(N ログN ))が、(特定のクエリ時にP例えば、()、結果は非常に速く返されるべきO (ログn個)時間)。a1,…,ana1,…,ana_1, \ldots, a_nnnnpppaiaia_iajaja_jpppa1,…,ana1,…,ana_1, \ldots, a_nO(nlogn)O(nlogn)O(n \log n)pppO(logn)O(logn)O(\log n) (より単純な例:pに最も近いSINGLE だけが必要な場合は、1、… 、a nオフライン、O (n log n )をソートしてから、クエリ時にバイナリ検索を実行しますO (log n ))。aiaia_ipppa1,…,ana1,…,ana_1, \ldots, a_nO(nlogn)O(nlogn)O(n \log n)O(logn)O(logn)O(\log n) 機能しないソリューション: 1)1、… 、a nをオフラインでソート、次にクエリ時に両端から開始して2つのポインターを内側に移動します(http://bit.ly/1eKHHDy)。O (n )クエリ時間のため、良くありません。a1,…,ana1,…,ana_1, \ldots, a_nO(n)O(n)O(n) 2)1、… 、a nをオフラインでソートしクエリ時に、各a iを取得して、 pに近いものに合計するのに役立つ「バディ」をバイナリ検索します。O (n log n )クエリ時間のため、良くありません。a1,…,ana1,…,ana_1, \ldots, a_naiaia_ipppO(nlogn)O(nlogn)O(n …