タグ付けされた質問 「lis」


1
最長K順次増加サブシーケンス
重複したスレッドを作成した理由 Kの例外が許可された最長の増加するサブシーケンスを読んだ後、このスレッドを作成しました。質問をしている人は、「1つの変更を許可して最長のサブアレイを増やす」問題を解決するリンクを参照していたため、問題を本当に理解していないことに気付きました。したがって、彼が得た答えは実際にはLIS問題とは無関係でした。 問題の説明 配列Aが長さNで与えられていると仮定します。K例外を許可して、最も長く増加するサブシーケンスを見つけます。 例 1)N = 9、K = 1 A = [3,9,4,5,8,6,1,3,7] 正解:7 説明: 最も長いサブシーケンスの増加は、3、4、5、8(または6)、1(例外)、3、7->合計= 7です。 2)N = 11、K = 2 A = [5,6,4,7,3,9,2,5,1,8,7] 答え:8 これまでに行ったこと... K = 1の場合、許可される例外は1つだけです。O(NlogN)の最長増加サブシーケンスを計算するための既知のアルゴリズムを使用する場合(ここをクリックしてこのアルゴリズムを表示)、配列の各要素に対してA [0]からA [N-1]までのLISを計算できます。 A.結果をサイズNの新しい配列Lに保存します。例n.1を見ると、L配列は L = [1,2,2,3,4,4,4,4,5]になります。 逆のロジックを使用して、配列Rを計算します。各要素には、N-1から0までの現在の最長減少シーケンスが含まれています。 1つの例外を除き、LISはsol = max(sol、L [i] + R [i + 1])です。 ここで、solはsol = L [N-1]として初期化されます。したがって、LISを0からインデックスi(例外)まで計算し、次にN-1まで新しいLISを停止および開始します。 …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.