間隔DP(超詳細な!!!)

まず、問題

長さn、[I]のシーケンスが与えられると、各パリンドローム配列は、n≤500をいくつかの完全な配列を除去することができる最小の損失を求め、消去両側を相互に接続され、消去の継続期間であってもよいです。

F [i] [j]は間隔[I、J]を消去表し必要な最小数です。

その後

[i]は[Jを=場合 ]、 そこ

ここで、実際に、我々は一般的DP範囲DPと呼ばれる段階、の間隔の長さです。

DP練習比較的一定間隔、すなわち列挙インターバル長、次いで左エンドポイント列挙、転写後列挙セクションブレークポイント。

第二に、概念

動的プログラミングは、順ステージ要素が表示されている合併の前段からの要素は素晴らしい関係を持っているが、線形ダイナミックプログラミングの種類の範囲を広げる段階的な問題でそれを分割することです。(例:F [I] [J] = F [i]が[K] + F [K + 1] [J])

インターバル動的なプログラミング機能:

  • マージ:2つ以上の部品を統合するために来ます。
  • 特長:問題は二十から二連結形に分解することができます。
  • 解決:合流点を列挙し、問題全体の最適値を設定し、問題は2つの部分に分解されるが、左右、そして最終的には約2部品の最適値は、元の問題の最適値を得るために結合されています。

第三に、例

[A]石例をマージ。

[問題の説明]

N(1≤n≤200)の周りに重ね石円形配置遊び場、ストーンパイルにマージするために有することです。引当金は、唯一の石の新しい山、そして新しい石杭の数、ノートの複合スコアに隣接する山を選択することができます。(1)混合溶液の石を選択するように組み合わされ、N-1回、スコアの最小の和を行います。(2)混合溶液の石を選択するように組み合わされ、N-1回、最大スコアの和を行います。

[サンプル入力]

4

4 5 9 4

[サンプル出力]

43

54


貪欲なソリューション:

62分の貪欲☝

正解共61分☟

[思考]コーチング

正のソリューション非環式:動的プログラミングに対応し、より長い間隔配置するには、2つの長手方向部分の小さいに関する情報である転送を、kは分割点の移動で決定、LENは、DPの間隔の長さである段階「セットの状態空間の最小寸法をカバーするように選択された」動的プログラミングは、左を使用してもよいし、右端はDPの状態を示しています。

合計[I]:私は石にスタックから最初のスタックの合計。

FMAX [i]は[J]:最大石小石の合成スコアからi番目のスタックがjスタック。

FMIN [i]は[J]:i番目の石jのヒープを重ね最小石の合成スコアから。

初期条件:Fmaxの[i]は[I] = 0、Fminを[I] [I] = INF

iは= K <<jの場合の状態遷移方程式は):(あります

時間の複雑さがあります

[処理]リングチェーンに切断されたリング

注意:タイトル石ではなくラインよりも、円です。

  • 方法1:砂利ヒープが円形であるため、時間複雑度となるように、私たちは、このようにn回行い、別の場所、チェーンへの最初のリングを列挙することができます。
  • 方法2:限り動的プログラミングは、これらの2n個のスタックとして、2N-1反応器、N + 1と同じ前記第1積層スタックに拡張これらの拡張ストランド2倍、I-N + iがスタックし、スタックが同一であります列挙F(1、N)、F(2、N + 1)、...、fは(N、2N-1)が最適値となります。以下に示すように、時間の複雑さは、次のとおりです。

 

 

[実施例] 2つの凸ポリゴン分割:

[問題の説明]

凸多角形の(1からNまでの番号)N(N≦50)の頂点が与えられると、各頂点の重量は、正の整数です。Q:この凸多角形は、N-2互いに素の三角形に分割された方法は、右の頂点が、そのような最小の和の積という三角形?

[例]

5

121 122 123 245 231

[出力例]

12214884


 

[解析]タイトル

我々の頂点は、私は凸多角形のJを頂点に、頂点から時計回りに番号を付けた場合は、次のように表されます。

设f[i][j](i<j)表示从顶点i到顶点j的 凸多边形三角剖分后所得到的最大乘积,当 前我们可以枚举点k,考虑凸多边形(i,j)中 剖出三角形(i,j,k),凸多边形(i,k), 凸多边形(k,j)的最大乘积和。我们可以得到 动态转移方程:(1<=i<k<j<=n)

初始条件:f[i][i+1]=0; 目标状态:f[1][n];

时间复杂度为:

但我们可以发现,由于这里为乘积之和,在输入数据较大时有可能超过长整形范围,所以还需用高精度计算。

 

【总结】

基本特征:将问题分解成为两两合并的形式。

解决方法:对整个问题设最优值,枚举合并点,将问题分解成为左右两个部分,再将左右两个部分的最优值进行合并得到原问题的最优值。

设i到j的最优值,枚举剖分(合并)点,将(i,j)分成左右两区间,分别求左右两边最优值,如下图:

状态转移方程的一般形式如下:

 

 

 

おすすめ

転載: www.cnblogs.com/ljy-endl/p/11610549.html