凸多边形的三角剖分

Posted lightyachoo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了凸多边形的三角剖分相关的知识,希望对你有一定的参考价值。

题目描述

给定一具有N个顶点(从1到N编号)的凸多边形,每个顶点的权均已知。问如何把这个凸多边形划分成N-2个互不相交的三角形,使得这些三角形顶点的权的乘积之和最小?技术图片

输入格式

第一行 顶点数N(N<50)。 第二行 N个顶点(从1到N)的权值,权值为小于32768的整数。

输出格式

第一行为各三角形顶点的权的乘积之和最小值。

样例

样例输入

5
121 122 123 245 231

样例输出

12214884
#include<bits/stdc++.h>
using namespace std;
const int N=100;
typedef long long ll;
ll f[N][N];
int n;
ll w[N];
int main(){
    scanf("%d",&n);
    for(int i=1;i<=n;i++){
        scanf("%d",&w[i]);
    }
    for(int i=1;i+2<=n;i++){
        f[i][i+2]=w[i]*w[i+1]*w[i+2];
    }
    for(int len=3;len<=n;len++){
        for(int i=1;i+len-1<=n;i++){
            int j=i+len-1;
            for(int k=i+1;k<=j-1;k++){
                if(f[i][j])f[i][j]=min(f[i][j],f[i][k]+f[k][j]+w[i]*w[k]*w[j]);
                else {
                    f[i][j]=f[i][k]+f[k][j]+w[i]*w[k]*w[j];
                }
            }
        }
    }
    printf("%lld
",f[1][n]);
    return 0;
}

 

以上是关于凸多边形的三角剖分的主要内容,如果未能解决你的问题,请参考以下文章

如何对内部有和没有顶点和孔的多边形进行三角剖分 - 可以进行德劳内三角剖分吗?

带洞多边形三角剖分

凸多边形的三角剖分

细分和三角剖分多边形

区间DP之凸多边形的三角剖分

Three.js 多边形三角剖分在伪重复点中失败