給定一具有
n 個頂點(從 1到
n 編號)的凸多邊形,每個頂點的權均已知。
問如何把這個凸多邊形劃分成 n−
2個互不相交的三角形,使得這些三角形頂點的權的乘積之和最小?
第一行 頂點數
n (
n<
50)。
第二行
n 個頂點(從 1到
n )的權值,權值為小於
32768
的整數。
第一行為各三角形頂點的權的乘積之和最小值。
5乙個凸多邊形剖分乙個三角形後,可以將凸多邊形剖分成三個部分:121 122 123 245 231
乙個三角形,二個凸多邊形。
如果我們按順時針將頂點編號,則可以相鄰兩個頂點描述乙個凸多邊形。 設 f
(i,j
) 表示 ij
這一段連續頂點的多邊形劃分後最小乘積
列舉點
k ,i、
j 和
k相連成基本三角形,並把原多邊形劃分成兩個子多邊形,則有 f(
i,j)
=min
1<=
i<
k<
j<=
n
時間複雜度 o(
n3)
#include
#include
#include
#define min(x,y) ((x)<(y)?(x):(y))
#define ll long long
using
namespace
std;
ll n;
ll w[100];
ll f[60][60];
int main()
printf("%lld\n",f[1][n]);
return
0;}
凸多邊形三角剖分問題
1 凸多邊形的三角剖分 將凸多邊形分割成互不相交的三角形的弦的集合t。2 最優剖分 給定凸多邊形p,以及定義在由多邊形的邊和弦組成的三角形上的權函式w。要求確定該凸多邊形的三角剖分,使得該三角剖分中諸三角形上權之和為最小。凸多邊形三角剖分如下圖所示 設 p v0,v1,vn 是n 1個頂點的多邊形 ...
凸多邊形最優三角剖分
問題描述 使用動態規劃演算法解凸多邊形最優三角剖分問題,具體來說就是,依據遞迴式,按照順序求得子問題,使得該三角剖分中諸三角形上權之和為最小。輸入形式 在螢幕上輸入凸多邊形頂點個數和頂點座標。輸出形式 最優三角剖分後的三角形頂點。樣例輸入 8 26 0 20 0 10 10 0 22 12 27 2...
凸多邊形的最優三角剖分
如圖所示,用頂點的逆時針序列表示凸多邊形,即p 表示具有n條邊的凸多邊形。給定凸多邊形p,以及定義在由多邊形的邊和弦組成的三角形上的權函式w。如圖所示劃分,要求確定該凸多邊形的三角剖分,使得該三角形上的勸之和最小。解析 若凸 n 1 邊形p 的最優剖分t包含三角形v0vkvn,1 k n 1,則t的...