zoukankan      html  css  js  c++  java
  • poj1160Post Office(DP)

    http://poj.org/problem?id=1160

    算水过的吧 四重循环没优化 CZ说爆可过 就爆了

    dp[i][j] = min(dp[i][j],dp[i-1][g]-s) 第i个点建在第j个村庄上 s 是这个点比上个点少的距离

     1 #include <iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #include<algorithm>
     5 #include<stdlib.h>
     6 #include<cmath>
     7 using namespace std;
     8 #define N 1010
     9 #define INF 0xfffffff
    10 int h[N],dp[40][N];
    11 int main()
    12 {
    13     int i,j,k,n,m,g;
    14     scanf("%d%d",&n,&m);
    15     for(i = 1; i <= n; i++)
    16     scanf("%d",&h[i]);
    17     for(i = 1; i <= n ; i++)
    18     {
    19         int s = 0;
    20         for(j = 1; j  <= n ; j++)
    21         s+=abs(h[j]-h[i]);
    22         dp[1][i] = s;
    23     }
    24     for(i = 2 ; i <= m ; i++)
    25         for(j = i ; j <= n ; j++)
    26         {
    27             dp[i][j] = INF;
    28             for(g = i-1; g < j ; g++)
    29             {
    30                 int s=0,ss=0;
    31                 for(k = g+1 ; k < j; k++)
    32                 {
    33                     s+=min(h[k]-h[g],h[j]-h[k]);
    34                     ss+=(h[k]-h[g]);
    35                 }
    36                 dp[i][j] = min(dp[i][j],dp[i-1][g]-ss-(h[j]-h[g])*(n-j+1)+s);
    37             }
    38         }
    39     int minz=INF;
    40     for(i = m; i <= n ; i++)
    41     minz = min(minz,dp[m][i]);
    42     printf("%d
    ",minz);
    43     return 0;
    44 }
    View Code
  • 相关阅读:
    跨域问题
    window7_64+python3.6安装Twisted
    resful协议1
    Http状态码
    数据库学习笔记
    linux学习笔记
    前端学习笔记
    python学习笔记
    mongoDB
    git的使用方法
  • 原文地址:https://www.cnblogs.com/shangyu/p/3261054.html
Copyright © 2011-2022 走看看