問題の最初に、範囲
図1に示すように、複数のセクション、選択された部分の数まで、このようなペアワイズ断面ています。
昇順で右端には、選択するために選択することができます。
図2に示すように、間隔の数は、各インターバル右の値は、ペアワイズ断面の数、および最大重量を選出します。
セット\(F_iとは、\)を行う前後です\(私は\)の右側の値に答えを\(W \)間隔\((L、R&LT)\)、\ \(F_R = MAX(F_R、最大\ limits_ = {J}。1. 1-L ^ {}(F_J)+ W)\)。
図3に示すように、複数のセクション、配列全体をカバーする選択された最小間隔。
順序左点を上昇、領域内の最も遠い点の左端の右の点がカバーされている、各プレフィックスはカバレッジの最長期間です。
コストが最小となるように4、複数のセクションは、各セクションには、コスト、全配列をカバーする選択された間隔を複数有しています。
セット\(F_iと\)を行う前後である\(Iは\)考慮のため回答\(W \)間隔\((L、R&LT)\)、\ (F_R =分(F_R、\分\ limits_ = {J} 1-L ^ R&LT(F_J)+ W)\)。
質問の第二に、シーケンス
1、LISは、最も長いシーケンスを上昇します
同法の一つ、フェンウィックツリー
セット\(F_iと\)は位置である\(私は\) LISの終わりの長さです。\(F_iと= \最大の\ limits_ {[におけるJ \ 1、I)\ウェッジF_J <F_iと}()+。1 \) 。
直接離散フェンウィックツリーました。
で\(a_iを\)添字れる\(F \)の値です。
それは最長の下落でない場合は、ちょうどうまく2つの値を変更します。
要素は、プレスであってもよい\(a_iを\)は昇順で最初のキーであり、\は、(私は\) (同じ値の更新を防止するために)降順に第2の鍵です。
実行するソート順は\(私は\)添字です\(F \)が値です。
それは最長の下落でない場合は、2番目のキーは昇順にソートすることができます。
方法2:ピギー半分+
セット\(F_iと\)は、の長さを表し(Iは\)\を LIS最小番号の末尾に値を。明らかに\(F \)単調では落ちませんでした。
配列の要素に\(a_iを\) 、我々は、より最後の半分以下見つける(a_iを\)\ \(F_J \) 、次いで\(F_ {jは1 +} = a_iを\) 、たびに答えが見出されることができ最大\(J + 1 \) 。