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

2022-03-20 01:06:52 字數 846 閱讀 1472

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

樣例輸入

5

121 122 123 245 231

樣例輸出
12214884
這道題有乙個有趣的性質,如果剖分出的多邊形是最優的,那麼他的子多邊形的剖分也必須是最優的

列舉起點 i,終點 j, 三角形頂點 k (i < k < j)

設dp[i][j]表示多邊形 vi ······· vj 的最優剖分, a[i]為點 i 的權值

動態轉移方程dp[i][j]=max(dp[i][j],dp[i][k]+dp[k][j]+a[i]*a[k]*a[j])

1 #include2 #include3 #include5 #define int long long

6 const int maxn = 55, inf = 0x3f3f3f3f;

7 using namespace std;

8 int n, k, f[maxn][maxn], a[maxn];

10 signed main()

20 }

21 }

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

23 return 0;

24 }

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

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

凸多邊形的三角剖分

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

凸多邊形三角剖分問題

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