zoukankan      html  css  js  c++  java
  • HDU 3516 DP 四边形不等式优化 Tree Construction

    设d(i, j)为连通第i个点到第j个点的树的最小长度,则有状态转移方程:

    d(i, j) = min{ d(i, k) + d(k + 1, j) + p[k].y - p[j].y + p[k+1].x - p[i].x }

    然后用四边形不等式优化之。。

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <cstring>
     4 #include <algorithm>
     5 #include <map>
     6 #define MP make_pair
     7 #define x first
     8 #define y second
     9 using namespace std;
    10 
    11 typedef pair<int, int> PII;
    12 
    13 const int maxn = 1000 + 10;
    14 const int INF = 0x3f3f3f3f;
    15 int n;
    16 
    17 PII p[maxn];
    18 
    19 int d[maxn][maxn], s[maxn][maxn];
    20 
    21 int main()
    22 {
    23     while(scanf("%d", &n) == 1 && n)
    24     {
    25         for(int i = 1; i <= n; i++) scanf("%d%d", &p[i].x, &p[i].y);
    26         for(int i = 1; i <= n; i++)
    27         {
    28             s[i][i + 1] = i;
    29             d[i][i + 1] = p[i+1].x - p[i].x + p[i].y - p[i+1].y;
    30         }
    31 
    32         for(int l = 3; l <= n; l++)
    33         {
    34             for(int i = 1; i + l - 1 <= n; i++)
    35             {
    36                 int j = i + l - 1;
    37                 d[i][j] = INF;
    38                 for(int k = s[i][j-1]; k <= s[i+1][j]; k++)
    39                 {
    40                     int t = d[i][k] + d[k+1][j] + p[k].y - p[j].y + p[k+1].x - p[i].x;
    41                     if(t < d[i][j])
    42                     {
    43                         d[i][j] = t;
    44                         s[i][j] = k;
    45                     }
    46                 }
    47             }
    48         }
    49 
    50         printf("%d
    ", d[1][n]);
    51     }
    52 
    53     return 0;
    54 }
    代码君
  • 相关阅读:
    zoj 3627 Treasure Hunt II (贪心)
    1028
    DB2数据库性能优化介绍
    Python之美[从菜鸟到高手]--深刻理解原类(metaclass)
    Java和C++中多态的实现方式
    汉语-词语-停留:百科
    汉语-词语-体会:百科
    汉语-词语-味道:百科
    笔记-生活-饮食:香料妙用
    汉语-词语-香料:百科
  • 原文地址:https://www.cnblogs.com/AOQNRMGYXLMV/p/4695220.html
Copyright © 2011-2022 走看看