• HDU 1227 Fast Food DP


    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1227

    题目大意:给定x轴上n个车站的位置和k个饭店。求k个饭店供给n个车站的距离总和的最小值。

    题目解析:动态规划题,用dp[i][j]表示由j个饭店供给i个饭店的最小值,cost[i][j]表示由一个饭店供给从i到j的饭店的最小值,饭店的位置选在(mid=(i+j)/2)的位置的车站时cost值最小。

    状态转移方程:dp[i][j]=min(dp[l-1][j-1]+cost[l][i]) (j≤ l≤i)

     1 #include<cmath>
     2 #include<cstdio>
     3 #include<cstring>
     4 #include<iostream>
     5 #include<algorithm>
     6 using namespace std;
     7 #define INF 9999999
     8 int dp[205][32],n,k,cost[202][202],a[201];
     9 //dp[i][j]表示前i个车站用j个饭店的最小值
    10 //cost[i][j]表示从i到j用一个饭店的值
    11 int main()
    12 {
    13     int i,j,mid,Case=1;
    14     while(scanf("%d%d",&n,&k),n+k)
    15     {
    16         for(i=1;i<=n;i++)
    17             scanf("%d",&a[i]);//每个车站的位置
    18         for(i=1;i<=n;i++)
    19             for(j=i;j<=n;j++)
    20         {
    21             cost[i][j]=0;
    22             mid=(i+j)/2;
    23             for(int l=i;l<=j;l++)
    24             {
    25                 cost[i][j]+=(int)abs(a[mid]-a[l]);
    26             }
    27         }
    28         memset(dp,0,sizeof(dp));
    29         for(i=1;i<=n;i++)
    30             dp[i][1]=cost[1][i];//初始化
    31         for(i=2;i<=n;i++)
    32             for(j=2;j<=k;j++)
    33             // i为车站,j为饭店
    34         {
    35             int _min=INF;
    36             for(int l=j;l<=i;l++)
    37             {
    38                 if(_min>(dp[l-1][j-1]+cost[l][i]))
    39                     _min=dp[l-1][j-1]+cost[l][i];
    40             }
    41             dp[i][j]=_min;
    42         }
    43         printf("Chain %d
    ",Case++);
    44         printf("Total distance sum = %d
    
    ",dp[n][k]);
    45     }
    46     return 0;
    47 }
    View Code
  • 相关阅读:
    [转]ARM平台下独占访问指令LDREX和STREX
    ARM MMU
    在字符串中查找子字符串并提取它
    获得字符串的长度
    连接字符串
    循环用于迭代数组中的项目
    循环的标准
    if ... else 语句
    添加一个图像切换器
    css 中的z-index
  • 原文地址:https://www.cnblogs.com/wuwing/p/3463390.html
Copyright © 2020-2023  润新知