UVA662- Fast Food
题意:在一条公路上,有n个酒店,要建造k个供给站(建造在酒店所在的位置),给出酒店的位置,求怎么样建造供给站才干使得每一个酒店都能得到服务且所要走的路程最短。
思路:在i到j酒店建立一个供给站,要使得路程和最短,要将供给站建立在中间。假设i到j为偶数时,能够建立在中间两个数当中一个地方,假设是奇数时,应该建立在(i + j) / 2的地方。我们能够预处理从i到j酒店的最短路程和dis[i][j]。所以能够得到d[i][j]表示i个供给站为前j个酒店服务时的最短路程和。之后的输出能够在计算的时候增加一个记录数组,记录切割的地方,然后递归输出。
状态转移方程:d[i][j] = min(d[i][j], d[i - 1][k] + dis[k + 1][j]); (1 <= k < j)
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm> typedef long long ll;
using namespace std; const int MAXN = 205;
const int INF = 0x3f3f3f3f; int p[MAXN], vis[MAXN][MAXN];
ll dis[MAXN][MAXN], d[MAXN][MAXN];
int n, m; void init() {
memset(vis, 0, sizeof(vis));
memset(dis, 0, sizeof(dis));
for (int i = 1; i <= n; i++)
for (int j = 1; j <= n; j++)
for (int k = i; k <= j; k++)
dis[i][j] += abs(p[(i + j) / 2] - p[k]); for (int i = 0; i <= m; i++)
for (int j = 0; j <= n; j++)
d[i][j] = INF; for (int i = 1; i <= n; i++)
d[1][i] = dis[1][i];
} void outPut(int cnt, int x, int y) {
printf("Depot %d at restaurant %d serves ", cnt, (x + y) / 2);
if (x == y)
printf("restaurant %d\n", x);
else
printf("restaurants %d to %d\n", x, y);
} void print(int x, int y) {
if (x > 1)
print(x - 1, vis[x][y]);
outPut(x, vis[x][y] + 1, y);
} int main() {
int t = 1;
while (scanf("%d %d", &n, &m) && n || m) {
for (int i = 1; i <= n; i++)
scanf("%d", &p[i]);
init(); for (int i = 2; i <= m; i++)
for (int j = i; j <= n; j++)
for (int k = i - 1; k < j; k++)
if (d[i][j] > d[i - 1][k] + dis[k + 1][j]) {
d[i][j] = d[i - 1][k] + dis[k + 1][j];
vis[i][j] = k;
} printf("Chain %d\n", t++);
print(m, n);
printf("Total distance sum = %lld\n\n", d[m][n]); }
}
UVA662- Fast Food的更多相关文章
- [置顶] 刘汝佳《训练指南》动态规划::Beginner (25题)解题报告汇总
本文出自 http://blog.csdn.net/shuangde800 刘汝佳<算法竞赛入门经典-训练指南>的动态规划部分的习题Beginner 打开 这个专题一共有25题,刷完 ...
- opencv中的SIFT,SURF,ORB,FAST 特征描叙算子比较
opencv中的SIFT,SURF,ORB,FAST 特征描叙算子比较 参考: http://wenku.baidu.com/link?url=1aDYAJBCrrK-uk2w3sSNai7h52x_ ...
- 基于Fast Bilateral Filtering 算法的 High-Dynamic Range(HDR) 图像显示技术。
一.引言 本人初次接触HDR方面的知识,有描述不正确的地方烦请见谅. 为方便文章描述,引用部分百度中的文章对HDR图像进行简单的描述. 高动态范围图像(High-Dynamic Range,简称HDR ...
- Fast RCNN 训练自己的数据集(3训练和检测)
转载请注明出处,楼燚(yì)航的blog,http://www.cnblogs.com/louyihang-loves-baiyan/ https://github.com/YihangLou/fas ...
- Fast RCNN 训练自己数据集 (2修改数据读取接口)
Fast RCNN训练自己的数据集 (2修改读写接口) 转载请注明出处,楼燚(yì)航的blog,http://www.cnblogs.com/louyihang-loves-baiyan/ http ...
- 网格弹簧质点系统模拟(Spring-Mass System by Fast Method)附源码
弹簧质点模型的求解方法包括显式欧拉积分和隐式欧拉积分等方法,其中显式欧拉积分求解快速,但积分步长小,两个可视帧之间需要多次积分,而隐式欧拉积分则需要求解线性方程组,但其稳定性好,能够取较大的积分步长. ...
- XiangBai——【AAAI2017】TextBoxes_A Fast Text Detector with a Single Deep Neural Network
XiangBai--[AAAI2017]TextBoxes:A Fast Text Detector with a Single Deep Neural Network 目录 作者和相关链接 方法概括 ...
- 论文笔记--Fast RCNN
很久之前试着写一篇深度学习的基础知识,无奈下笔之后发现这个话题确实太大,今天发一篇最近看的论文Fast RCNN.这篇文章是微软研究院的Ross Girshick大神的一篇作品,主要是对RCNN的一些 ...
- [转]Amazon DynamoDB – a Fast and Scalable NoSQL Database Service Designed for Internet Scale Applications
This article is from blog of Amazon CTO Werner Vogels. -------------------- Today is a very exciting ...
- FAST特征点检测features2D
#include <opencv2/core/core.hpp> #include <opencv2/features2d/features2d.hpp> #include & ...
随机推荐
- Solaris 10下使用Python3
通常在Solaris 10上仅仅能使用Python2.x. 假设使用Python3的话,一种就是http://www.sunfreeware.com获取可用的二进制版本号.只是眼下这个站点已经不提供免 ...
- Uva562(dp)
给我们n个硬币 每个硬币都有它的面值,要我我们分为两堆硬币,使得硬币的差值最小 我们可以dp计算出所有的差值,然后从小到大枚举差值,如果差值存在,就输出 dp[i][j] 表示对于前i件物品能达到差值 ...
- UML序列图总结(转)
序列图主要用于展示对象之间交互的顺序. 序列图将交互关系表示为一个二维图.纵向是时间轴,时间沿竖线向下延伸.横向轴代表了在协作中各独立对象的类元角色.类元角色用生命线表示.当对象存在时,角色用一条虚线 ...
- URAL 1934 Black Spot --- 最短的简单修改
右侧是1.维护的同时保持最短路p值至少,我有直接存款(1-p).该概率不满足,为了使这个值极大. #include <iostream> #include <cstdlib> ...
- [java面试题]最长的回文字符串中出现确定
<span style="font-family: Arial, Helvetica, sans-serif;">package com.wzw.util;</s ...
- 解决adb server is out of date. killing...问题
在运行 adb 命令时出现了例如以下提示: adb server is out of date. killing... 导致 adb 无法正常启动,更无法运行其它命令. 有问题怎么办?百度呗.查了查 ...
- web.xmlf多ilter在执行顺序
1.随着url-pattern路配置filter请务必先实施servlet-name路配置filter 2.随着url-partern路配置filter于.,按web.xml于filter-ma ...
- Sonar安装与使用说明
我总结的Sonar安装与使用说明,需要的可以去网盘下载. 网盘地址: http://pan.baidu.com/s/199BII
- 开源Math.NET基础数学类库使用(01)综合介绍
原文:[原创]开源Math.NET基础数学类库使用(01)综合介绍 开源Math.NET基础数学类库使用系列文章总目录: 1.开源.NET基础数学计算组件Math.NET(一)综合介绍 2. ...
- 【Android进阶】SlidingMenu实现侧滑栏效果的实现
public class MainActivity extends Activity { @Override protected void onCreate(final Bundle savedIns ...