間隔DP--エネルギーのネックレス

E.エネルギーのネックレス

メモリ制限:128のMIB 制限時間:1000msの標準出力
質問の種類:伝統的な評価方法:テキスト比較

タイトル説明

火星では、火星すべての人は、エネルギーのネックレスの束を着用すること。ネックレスエネルギーのビーズのN個があります。エネルギービーズはヘッドとテールマークラベルされたビーズを持って、これらのマークは、正の整数に対応しています。そして、隣接する二つのビーズのために、マーカーの終了前にビーズは、ビーズの後の最初のマークと同じでなければなりません。エネルギーの放出がチャックによって吸収されてもよいだけこのように、吸引カップ(吸盤臓器火星ヒトエネルギー吸収である)効果、2つのビードは、ビードに重合します。前者ヘッドエネルギーはビーズmを標識した場合、ポストアンブルをr、R標識されたビーズ、テールマークのヘッドのエネルギーをnと、次いで(火星単位)をリリース重合エネルギーの後、ビーズを新たに生成しましたヘッドは、テールマークがnであり、mとなりました。

必要な場合には、隣接する二つのビーズをクランプ吸盤と火星人は、次のビーズのネックレスまで左まで、エネルギーを重合して得られます。もちろん、重合GETの異なる順序の総エネルギーは、あなたがリリースされた最大総エネルギーのうちのネックレスを作るための重合の順序を設計し、異なっています。

例:N =頭部および尾部標識4,4ビーズを標識した(2,3)、(3,5)、(5,10)、(10,2)とします。我々は、重合が解放後に2つのビードをK、2つのビード重合操作、(j⊕k)Jのエネルギーを表す⊕シンボルを使用します。最初の2つのビードによって解放重合エネルギーの後4,1です。

(4⊕1)は10 = 2 3 = 60。

このネックレスは、最適値を発表した重合のための総エネルギーすることができ

((4⊕1)⊕2)⊕3)10 = 2 3 + 10 3 5 + 10 5 = 710 10。

入力形式

入力ファイルenergy.inの最初の行は、正の整数N(4≤N≤100)であるネックレス上のビーズの数を表します。第二のラインは1,000全ての数以上ではない、nは正の整数の空間によって分離されています。ビードの端部をマーキングiがN <スパン<I番目(1≤i≤N)の第1のビード、>のi番目のタグは、ビーズのI + 1ヘッドマークIに等しくなければなりません。N標識ビーズは、標識されている第1のビードのヘッドエンドに等しくなければなりません。ビーズの順序については、あなたが判断できるように表にネックレス、クロス表示されない、任意に最初に指定されたビーズは、その後、時計回り他のビーズに順序を決定します。

出力フォーマット

出力ファイルは一つだけの行をenergy.out、それは正の整数E(E≤2.1* 109)、解放重合のための最適な総エネルギーです。

サンプル

サンプル入力

4
2 3 5 10

サンプル出力

710

 

 

 

 

1の#include <iostreamの>
 2の#include <CStringの>
 3の#include <cstdioを>
 4の#include <積層>
 5  使って 名前空間STDを、
6  INTの N、nuse、DOD、DP [ 201 ] [ 201 ] / * I - J最优解* /、ウェイ[ 201 ] / * 从1至iは* /、マキシ、TOU [ 201 ]、maxmax。
7  INT メイン()
 8  {
 9      CIN >> N。
10      nuse = 2 * N- 1 11      のためののInt I = 1 ; I <= N; Iは++ 12は     、{
 13は          CIN >> ; TOU [I]
 14          ウェイ[I- 。1 ] = ; TOU [I]
 15      }
 16      ウェイが[ 0 ] = 0 ;
 17      ウェイ[ N-] = TOUの[ 1。];
 18である     ためINT I = N + 1 ; Iは、<= 2 ; * N-Iが++ 19      {
 20である          [I] = TOUは[I-TOU N-];
 21である          ウェイ[I]は=ウェイ[I - N-];
 22です     }
23      のためにINT LEN = 1 ; lenは<N; LEN ++ 24      {
 25          のためにint型 I = 1 ; I <= 2 * N-LEN; iは++ 26          {
 27              のint J = LEN + I。
28              のためのint型、K <J、K = I kは++ 29              {
 30                  DP [I] [J] = MAX(DP [I]、[J]、DP [I] [K] + DP [K + 1 ] [J ] + TOU [I] *ウェイ[K] * ウェイ[J])。
31              }
 32          }
 33      }
 34     以下のためにint型 I = 1 <; iがN ++ =私は35      {
 36          であれば(DPを[I] [I + N- 1 ]> マキシ)
 37          {
 38              マキシ= DP [I] [I + N- 1 ]。
39          }
 40      }
 41      COUT << マキシ。 
42 }

 

おすすめ

転載: www.cnblogs.com/lihaolin/p/11276775.html
おすすめ