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

题意:一维坐标上有n个点,位置已知,选出k(k <= n)个点,使得所有n个点与选定的点中最近的点的距离总和最小,求出最小值。

思路:

将点i的距离记为为dis[i],从i到j选出一点使此段距离和最小,则此点坐标为dis[(i + j) / 2]

cost[i][j]为从i到j选出一点距离和的最小值。则求cost[i][j]的代码如下:

  cost[i][j] = 0;
  for(int k = i; k <= j; k++){
    cost[i][j] += abs(dis[(i + j)/2] - dis[k]);
  }

dp[i][j]表示从1到i选择j个点的最小值,则状态转移方程如下:

dp[i][j] = min(dp[k][j - 1] + cost[k + 1][i]) (j - 1 <= k <i)

代码如下,注意边界情况的处理,表示我也很头疼边界情况

#include<iostream>
#include<cstdio>
#include<string>
#include<cstring>
#include<cstdlib>
#include<queue>
#include<vector>
#include<algorithm>
using namespace std;
typedef long long LL;
const int N = ;
LL dp[N][], cost[N][N];
int dis[N];
int main(){
int n, m, cs = ;
while(~scanf("%d %d", &n ,&m) && n && m ){
for(int i = ; i <= n ; i++){
scanf("%d", &dis[i]);
}
memset(cost, 0x3F, sizeof(cost));
memset(dp, 0x3F, sizeof(dp));
for(int i = ; i <= n ; i++){
for(int j = i; j <= n ;j++){
cost[i][j] = ;
for(int k = i; k <= j; k++){
cost[i][j] += abs(dis[(i + j)/] - dis[k]);
} }
}
for(int i = ; i <= n; i++){
dp[i][] = cost[][i];
}
for(int j = ; j <= m ; j++){
for(int i = j; i <= n; i++){
for(int k = j - ; k < i; k++){
dp[i][j] = min(dp[i][j], dp[k][j - ] + cost[k + ][i]);
}
}
}
cs++;
printf("Chain %d\nTotal distance sum = %I64d\n\n",cs,dp[n][m]);
}
return ;
}

最新文章

  1. Vmware虚拟机Devstack安装openstack(All in one)
  2. [UML]UML系列——类图class的依赖关系
  3. Java 路径
  4. java中常用数据类型转换器
  5. LK 光流法简介
  6. 手机web下拉加载
  7. python css概述
  8. WebUploader上传文件(一)
  9. Core Erlang:Erlang的Core中间表示
  10. spring boot使用profile来区分正式环境配置文件与测试环境配置文件
  11. 【故障公告】10:30-10:45 左右 docker swarm 集群节点问题引发故障
  12. winfrom中pictureBox控件的部分使用方法
  13. t-io 集群解决方案以及源码解析
  14. 【20180111】【物流FM专访】贝业新兄弟李济宏:我们是如何做到大件家居B2C物流第一的?
  15. mysql5.7.21免安装版配置步骤
  16. OpenStack云桌面系列【2】—OpenStack和Spice
  17. Lambda模式
  18. GoLand(一)安装
  19. PHP API中,MYSQL与MYSQLI的持久连接区别
  20. IDEA配置toString方法

热门文章

  1. QT 信号与槽connect
  2. Python文件操作题
  3. postgresql数据库实用操作
  4. discuzX3后台管理插件开发入门
  5. PHP socket编程需要了解的一些基本知识
  6. 【Linux】find grep 联合使用 过滤所有子目录、文件
  7. jQuery DataTables &amp;&amp; Django serializer
  8. mysql性能优化-简易版
  9. redis与memcache区别总结
  10. html 中绑定事件 this的指向