zoukankan      html  css  js  c++  java
  • 1039. 多边形三角剖分的最低得分

    区间dp

    终态时是0与n - 1连成的边和另一个顶点j,遍历0 到n - 1之间的点j,取乘积最小的

    则0   j   n - 1,把多边形分成了3份;其中0 j n - 1为三角形,另外两个多边形(也有可能是三角形)

    因此dp[0][n - 1] = dp[0][j] + dp[j][n - 1] + values[0] * values[n - 1] * values[j]

    推广到i即可

    class Solution {
    public:
        int dp[55][55];
        int minScoreTriangulation(vector<int>& values) {
            memset(dp, 0, sizeof(dp));
            int n  =values.size();
            for(int j = 2; j < n; j++)
            {
                for(int i = j - 2; i >= 0; i--)
                {
                    for(int k = i + 1; k < j; k++)
                    {
                        if(dp[i][j] != 0)
                            dp[i][j] = min(dp[i][j], dp[i][k] + dp[k][j] + values[i] * values[j] * values[k]);
                        else
                            dp[i][j] = values[i] * values[j] * values[k] + dp[i][k] + dp[k][j];
                    }
    
                }
            }
            return dp[0][n - 1];
    
        }
    };
    自己选择的路,跪着也要走完。朋友们,虽然这个世界日益浮躁起来,只要能够为了当时纯粹的梦想和感动坚持努力下去,不管其它人怎么样,我们也能够保持自己的本色走下去。
  • 相关阅读:
    eclipse中在线添加TestNG插件步骤(需联网)
    [IOI2008] Type Printer 打印机
    P2765 魔术球问题
    [HNOI2004]敲砖块
    P3931 SAC E#1
    [WC2005]友好的生物
    P1357 花园
    [SDOI2016]征途
    [APIO2014]序列分割
    [HNOI2008]玩具装箱TOY
  • 原文地址:https://www.cnblogs.com/WTSRUVF/p/15621706.html
Copyright © 2011-2022 走看看