N
頂点とN
エッジを持つポリゴンが与えられます。すべての頂点にint番号(負の場合もあります)があり、(*,+)
すべてのエッジに操作が設定されています。毎回、ポリゴンからエッジEを削除し、エッジによってリンクされた2つの(V1,V2)
頂点を値:の新しい頂点にマージしますV1 op(E) V2
。最後のケースは、2つのエッジを持つ2つの頂点であり、結果はより大きなものになります。
指定されたポリゴンから取得できる最大の結果値を返します。
最後のケースでは、他の数値が負になる可能性があるため、2つのマージは必要ない場合があります。その場合、大きい方の数値を返すだけです。
私が問題にどのように取り組んでいるか:
p[i,j] denotes the maximum value we can obtain by merging nodes from labelled i to j.
p[i,i] = v[i] -- base case
p[i,j] = p[i,k] operator in between p[k+1,j] , for k between i to j-1.
and then p[0,n] will be my answer.
Second point , i will have to start from all the vertices and do the same as above as this will be cyclic n vertices n edges.
The time complexity for this is n^3 *n i.e n^4 .
これより上手くできますか?