题意:

X轴上有N个餐馆。位置分别是D[1]...D[N]。

有K个食物储存点。每一个食物储存点必须和某个餐厅是同一个位置。

计算SUM(Di-(离第i个餐厅最近的储存点位置))的最小值。

1 <= n <= 200, 1 <= k <= 30, k <= n

思路:

第K个储存点的位置如果确定,前K-1个储存点的位置是浮动的。有很多的重复子结构。DP的结构很明显。

dp[i][j]:第i个储存点放在第j个餐馆的位置所得到的最小值。

代码:

int n,k;
int pos[205];
int dp[35][205]; int calc(int pre,int now){
int ans=0;
rep(i,pre,now){
ans+=min( pos[i]-pos[pre],pos[now]-pos[i] );
}
return ans;
}
int calc2(int last){
int ans=0;
rep(i,last,n){
ans+=(pos[i]-pos[last]);
}
return ans;
} int main(){
int T=0;
while(scanf("%d%d",&n,&k)!=EOF,n||k){
rep(i,1,n) scanf("%d",&pos[i]); sort(pos+1,pos+1+n); mem(dp,inf);
dp[1][1]=0; rep(now,1,n-k+1){
dp[1][now]=0;
rep(j,1,now-1){
dp[1][now]+=(pos[now]-pos[j]);
}
}
rep(i,2,k){ //第i个depot
rep(now,i,n-k+i){ //第i个depot放置的编号
rep(pre,i-1,now-1){ //第i-1个depot放置的编号
dp[i][now]=min( dp[i][now],dp[i-1][pre]+calc(pre,now) );
}
}
} int ans=inf;
rep(last,k,n){
ans=min( ans,dp[k][last]+calc2(last) );
}
printf("Chain %d\n",++T);
printf("Total distance sum = %d\n\n",ans);
} return 0;
}

hdu 1227 Fast Food(DP)的更多相关文章

  1. HDU 5791:Two(DP)

    http://acm.hdu.edu.cn/showproblem.php?pid=5791 Two Problem Description   Alice gets two sequences A ...

  2. HDU 4833 Best Financing(DP)(2014年百度之星程序设计大赛 - 初赛(第二轮))

    Problem Description 小A想通过合理投资银行理财产品达到收益最大化.已知小A在未来一段时间中的收入情况,描述为两个长度为n的整数数组dates和earnings,表示在第dates[ ...

  3. [ACM] HDU 1227 Fast Food (经典Dp)

    Fast Food Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total ...

  4. HDU 4833 Best Financing (DP)

    Best Financing Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  5. HDU 1422 重温世界杯(DP)

    点我看题目 题意 : 中文题不详述. 思路 : 根据题目描述及样例可以看出来,如果你第一个城市选的是生活费减花费大于等于0的时候才可以,最好是多余的,这样接下来的就算是花超了(一定限度内的花超),也可 ...

  6. HDU 1176 免费馅饼(DP)

    点我看题目 题意 : 中文题.在直线上接馅饼,能接的最多是多少. 思路 :这个题其实以前做过.....你将这个接馅饼看成一个矩阵,也不能说是一个矩阵,反正就是一个行列俱全的形状,然后秒当行,坐标当列, ...

  7. hdu 4055 Number String(dp)

    Problem Description The signature of a permutation is a string that is computed as follows: for each ...

  8. 【HDU - 4345 】Permutation(DP)

    BUPT2017 wintertraining(15) #8F 题意 1到n的排列,经过几次置换(也是一个排列)回到原来的排列,就是循环了. 现在给n(<=1000),求循环周期的所有可能数. ...

  9. HDU 5375 Gray code(DP)

    题意:给一串字符串,里面可能出现0,1,?,当中问号可能为0或1,将这个二进制转换为格雷码后,格雷码的每位有一个权值,当格雷码位取1时.加上该位权值,求最大权值和为多少. 分析:比赛的时候愚了.竟然以 ...

随机推荐

  1. 深入HTML5第二天

    sub(subscripted下标标签)和sup(superscripted上标标签) 内联元素:inline element  span(范围标签):内联元素inline element 特性:没有 ...

  2. AVS 端能力之音频播放模块

    功能简介 音频播放 音频流播放 URL文件播放 播放控制 播放 暂停 继续 停止 其它功能(AVS服务器端实现) 支持播放列表 支持上一首下一首切换 支持电台 事件指令集 AudioPlayer 端能 ...

  3. pyqt5设计无边框窗口(一)

    import sys from PyQt5 import QtGui,QtCore from PyQt5 import QtCore, QtGui, QtWidgets ############### ...

  4. Java安全之 ClassLoader类加载器

    Java安全之 ClassLoader类加载器 0x00 前言 前面这里抛出一个问题,Java到底是什么类型的编程语言?是编译型?还是解释型?在这个问题是其实一直都都有疑惑,如果说是解释型语言的话,那 ...

  5. 鸿蒙内核源码分析(互斥锁篇) | 比自旋锁丰满的互斥锁 | 百篇博客分析OpenHarmony源码 | v27.02

    百篇博客系列篇.本篇为: v27.xx 鸿蒙内核源码分析(互斥锁篇) | 比自旋锁丰满的互斥锁 | 51.c.h .o 进程通讯相关篇为: v26.xx 鸿蒙内核源码分析(自旋锁篇) | 自旋锁当立贞 ...

  6. CF1392G-Omkar and Pies【dp】

    正题 题目链接:https://www.luogu.com.cn/problem/CF1392G 题目大意 两个长度为\(k\)的起始和目标01串. \(n\)个操作交换起始串的两个位置,选择一段长度 ...

  7. P7323-[WC2021]括号路径【并查集,启发式合并】

    正题 题目链接:https://www.luogu.com.cn/problem/P7323 题目大意 给出\(n\)个点的一张有向图.每个边\((u,v,w)\)表示\(u->v\)有一个类型 ...

  8. AngularJS的简单实用

    Angular Js 的初步认识和使用    一:        1.模块化            定义模块和控制器  ng-app="myapp"  controller=&qu ...

  9. 浏览器输入URL之后,HTTP请求返回的完整过程

    1.输入url,按下回车时,先做一个redirect(重定向),因为浏览器可能记录本机的地址已经永久跳转成新的地址,所以一开始浏览器就先要判断下需不需要重定向,以及重定向到哪里:2.然后第二步就是看A ...

  10. Django整理(二) - 视图和模板的初步使用

    Django中的视图 · Django使用视图来编写web应用的业务逻辑 · Django的视图也就是一个函数,可称为视图函数 · 视图定义在应用的view.py文件中 · 视图需要绑定一个URL地址 ...