區間DP之凸多邊形的三角剖分

2022-01-30 14:25:18 字數 606 閱讀 8686

給定一具有n個頂點(從1到n編號)的凸多邊形,每個頂點的權均已知。問如何把這個凸多邊形劃分成n-2個互不相交的三角形,使得這些三角形頂點的權的乘積之和最小?

第一行 頂點數n(n<50)。 第二行 n個頂點(從1到n)的權值,權值為小於32768的整數。

第一行為各三角形頂點的權的乘積之和最小值。

5121 122 123 245 231

我們可以假設某個三角形在最優解的情況下,那麼在遍歷長度的情況下,列舉左端點,從而推出右端點,進而列舉斷電,將整個凸多邊形分成三部分,即f[i][j]=min(f[i][j],f[i][k]+f[k][j]+a[k]a[i]a[j]),從而求出最小價值(需要注意的是當發f[i][j]==0時,應當直接取後者值)

#include using namespace std;

typedef long long ll;

const int maxn=50+5;

int n;

ll a[maxn],f[maxn][maxn];

int main()

} }printf("%lld\n",f[1][n]);

return 0;

}

凸多邊形的三角剖分 區間dp

給定一具有n個頂點 從1到n編號 的凸多邊形,每個頂點的權均已知。問如何把這個凸多邊形劃分成n 2個互不相交的三角形,使得這些三角形頂點的權的乘積之和最小?樣例輸入 5 121 122 123 245 231 樣例輸出12214884這道題有乙個有趣的性質,如果剖分出的多邊形是最優的,那麼他的子多邊...

凸多邊形的三角剖分

給定一具有 n 個頂點 從 1到 n 編號 的凸多邊形,每個頂點的權均已知。問如何把這個凸多邊形劃分成 n 2個互不相交的三角形,使得這些三角形頂點的權的乘積之和最小?第一行 頂點數 n n 50 第二行 n 個頂點 從 1到 n 的權值,權值為小於 32768 的整數。第一行為各三角形頂點的權的乘...

凸多邊形三角剖分問題

1 凸多邊形的三角剖分 將凸多邊形分割成互不相交的三角形的弦的集合t。2 最優剖分 給定凸多邊形p,以及定義在由多邊形的邊和弦組成的三角形上的權函式w。要求確定該凸多邊形的三角剖分,使得該三角剖分中諸三角形上權之和為最小。凸多邊形三角剖分如下圖所示 設 p v0,v1,vn 是n 1個頂點的多邊形 ...