いくつかの貪欲クラシックテンプレート

問題の最初に、範囲

図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 \)

おすすめ

転載: www.cnblogs.com/cjoierShiina-Mashiro/p/11578406.html