hdu 1227 Fast Food(DP)
题意:
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)的更多相关文章
- HDU 5791:Two(DP)
http://acm.hdu.edu.cn/showproblem.php?pid=5791 Two Problem Description Alice gets two sequences A ...
- HDU 4833 Best Financing(DP)(2014年百度之星程序设计大赛 - 初赛(第二轮))
Problem Description 小A想通过合理投资银行理财产品达到收益最大化.已知小A在未来一段时间中的收入情况,描述为两个长度为n的整数数组dates和earnings,表示在第dates[ ...
- [ACM] HDU 1227 Fast Food (经典Dp)
Fast Food Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total ...
- HDU 4833 Best Financing (DP)
Best Financing Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- HDU 1422 重温世界杯(DP)
点我看题目 题意 : 中文题不详述. 思路 : 根据题目描述及样例可以看出来,如果你第一个城市选的是生活费减花费大于等于0的时候才可以,最好是多余的,这样接下来的就算是花超了(一定限度内的花超),也可 ...
- HDU 1176 免费馅饼(DP)
点我看题目 题意 : 中文题.在直线上接馅饼,能接的最多是多少. 思路 :这个题其实以前做过.....你将这个接馅饼看成一个矩阵,也不能说是一个矩阵,反正就是一个行列俱全的形状,然后秒当行,坐标当列, ...
- hdu 4055 Number String(dp)
Problem Description The signature of a permutation is a string that is computed as follows: for each ...
- 【HDU - 4345 】Permutation(DP)
BUPT2017 wintertraining(15) #8F 题意 1到n的排列,经过几次置换(也是一个排列)回到原来的排列,就是循环了. 现在给n(<=1000),求循环周期的所有可能数. ...
- HDU 5375 Gray code(DP)
题意:给一串字符串,里面可能出现0,1,?,当中问号可能为0或1,将这个二进制转换为格雷码后,格雷码的每位有一个权值,当格雷码位取1时.加上该位权值,求最大权值和为多少. 分析:比赛的时候愚了.竟然以 ...
随机推荐
- vue注意点
template下面只能有一个节点,不能是多个
- 深入xLua实现原理之C#如何调用Lua
本文主要是探讨xLua下C#调用Lua的实现原理,有关Lua如何调用C#的介绍可以查看深入xLua实现原理之Lua如何调用C# C#与Lua数据通信机制 无论是Lua调用C#,还是C#调用Lua,都需 ...
- 低差异序列 (low-discrepancy sequences)之Halton序列均匀产生多维随机数的介绍与实现
Halton序列 在统计学中,Halton序列是用于生成空间中的点的序列,如Monte Carlo模拟的数值方法,虽然这些序列是确定性的,但它们的差异性很低,也就是说,在许多方面看起来是随机的.它们在 ...
- ES增删改查
了解了一下python对es 7.5的操作,记录下,不难: #!/usr/bin/env python # -*- coding: UTF-8 -*- from settings import Con ...
- html table 固定列
css固定列: .td1{ position: sticky; z-index: 1; left:0; }
- pyqt5无边框拖动
from PyQt5.QtWidgets import * from PyQt5.QtCore import * from PyQt5.QtGui import * import sys class ...
- c++ 的学习笔记 第一集cim cout
1. 你要用这个东西,所以得有包含它得头文件,就像java 你要用某个模块,你得包含这个模块 模块化??单片机里面学的模块化(可以在vs里面实现) 2. 当我把注册表regedit 程序删除之后成功了 ...
- 关于open falcon 与nightingale 的一些调研
针对 open-falcon 与 nightingale 的调研 一.open-falcon 1.1 组件介绍 1.1.1 agent > agent用于采集机器负载监控指标,比如cpu.idl ...
- Python日常Bug集
1.TypeError: 'int' object is not iterable: 场景示例: data = 7 for i in data: print(i) # 原因:直接对int数据进行迭代造 ...
- 使用 WPF + Chrome 内核实现 在线客服系统 的复合客服端程序
本系列文章详细介绍使用 .net core 和 WPF 开发 升讯威在线客服与营销系统 的过程.本产品已经成熟稳定并投入商用. 免费使用 & 私有化部署免费下载:https://docs.sh ...