-3

それぞれ長さがnの2つのソートされた配列AとBがあります。

また、インデックスSのペアのセットがあります。インデックスは1からnの間です。(たとえば、n = 3の場合、Sは(1,2)、(2,3)、および(1,1)になります)。

A [i] + B [j]を最大化するSからペア(i、j)を見つけるような、非常に高速なアルゴリズム(できればO(log n))が必要です。

Sで任意の前処理を実行できます(特定の値のハッシュなど)。

O(n log n)の前処理はAとBで実行できます(とにかくソートに時間がかかるため)が、前処理が完了すると、さまざまな前処理されたSを使用した後続のクエリは高速になります。

アイデアをありがとう。

4

1 に答える 1

0

これは O(n) 未満では実行できません。

S={(i,n-i+1)|1≤i≤n}S の各要素をテストする以外に解決策がない場合は、 for 、とi≠jの両方が可能です。A[i]+B[n-i+1] < A[j]+B[n-j+1]A[i]+B[n-i+1] ≥ A[j]+B[n-j+1]

于 2012-06-12T19:27:43.117 に答える