POJ 1160 Post Office

POJ 1160 Post Office(经典DP) 题目链接:点击打开链接 题意:一条高速公路,有N个村庄,每个村庄均有一个唯一的坐标,选择P个村庄建邮局,问怎么选择,才能使每个村庄到其最近邮局的距离和最小?最后打印这个最小值。 思路:典型的DP问题。 当我们在v个村庄中只建一个邮局,可以推导出,只有邮局位于中间位置,距离和才最小;有一个特殊情况是,当村庄数为偶数,中间位置有两个村庄,经过计算,两个村庄的距离和相等,所以俩位置均可。 可以联 阅读详情

Post Office
Time Limit: 1000MS Memory Limit: 10000K
Total Submissions: 9376 Accepted: 5027

Description

There is a straight highway with villages alongside the highway. The highway is represented as an integer axis, and the position of each village is identified with a single integer coordinate. There are no two villages in the same position. The distance between two positions is the absolute value of the difference of their integer coordinates. 

Post offices will be built in some, but not necessarily all of the villages. A village and the post office in it have the same position. For building the post offices, their positions should be chosen so that the total sum of all distances between each village and its nearest post office is minimum. 

You are to write a program which, given the positions of the villages and the number of post offices, computes the least possible sum of all distances between each village and its nearest post office. 

Input

Your program is to read from standard input. The first line contains two integers: the first is the number of villages V, 1 <= V <= 300, and the second is the number of post offices P, 1 <= P <= 30, P <= V. The second line contains V integers in increasing order. These V integers are the positions of the villages. For each position X it holds that 1 <= X <= 10000.

Output

The first line contains one integer S, which is the sum of all distances between each village and its nearest post office.

Sample Input

10 5
1 2 3 6 7 9 11 22 44 50

Sample Output

9

Source

/*
假设cost[v][p]表示1-v号村庄一共设置p个邮局所可以得到的最短距离
那么可以对最后一个邮局进行DP
 DP方程(从中间分成两个最优子问题) cost[vNum][pNum] = min{cost[range][p - 1] + sin[range + 1][vNum]
    1)cost[range][p - 1]表示前p-1个邮局可以最优覆盖1-range个村庄, range范围是[pNum - 1, vNum - 1]
      因为pNum - 1邮局至少可以去最优覆盖pNum - 1个邮局
    2)sin[range + 1][vNum]表示第pNum个邮局可以最优覆盖range + 1致第vNum个村庄的最优距离
    3)cost[vNum][pNum]只与cost[...][pNum - 1]有关,所有一MAX_N * 2数组即可搞定(空间压缩)
*/
#include <iostream>
#define MAX_N 305
using namespace std;

int vNum, pNum, minCost = INT_MAX;
int dist[MAX_N + 1];

int sinD[MAX_N + 1][MAX_N + 1]; //sinD[a, b]表示在a村庄和b村庄之间建立一个邮局可以得到的最短总距离
int cost[MAX_N + 1][2];

void initial()
{
    int i, j;
    memset(sinD, 0, sizeof(sinD));
    for(i = 1; i <= vNum; i++)
    {
        for(j = i + 1; j <= vNum; j++)
            sinD[i][j] = sinD[i][j - 1] + dist[j] - dist[int((i + j) / 2)];
        //初始化
        //cost[i][0]相当于分析中的cost[i][1],只不过这里用第二维数组用2取代pNum进行了空间压缩
        cost[i][0] = sinD[1][i];
    }
}

void input()
{
    cin>>vNum>>pNum;
    for(int i = 1; i <= vNum; i++)
        cin>>dist[i];
}

void dpSolve()
{
    int last = 0, cur = 1;
    //从邮局数量开始初始邮局数量等于1已经在initial中算过了,所以这里仅从2开始
    for(int pn = 2; pn <= pNum; pn++)
    {
        cur = 1 - last;
        //村庄数量至少等于邮局数量,否则最优结果肯定为0,是不需要考虑的
        for(int vn = pn; vn <= vNum; vn++)
        {
            int curMin = INT_MAX;
            //前pn - 1个邮局可以覆盖的村庄范围
            for(int range = pn - 1; range <= vn - 1; range++)
            {
                int curDist = cost[range][last] + sinD[range + 1][vn];
                if(curDist < curMin) curMin = curDist;
            }
            cost[vn][cur] = curMin;
        }
        last = cur;
    }
    if(pNum <= 1) cur = 0;
    cout<<cost[vNum][cur]<<endl;
}

int main()
{
    input();
    initial();
    dpSolve();
    return 0;
}

poj——1160——Post Office 题目:用数轴描述一条高速公路,有V个村庄,每一个村庄坐落在数轴的某个点上,需要选择P个村庄在其中建立邮局,要求每个村庄到最近邮局的距离和最小。 分析:经典DP 1、考虑在V个村庄中只建立一个邮局的情况,显然可以知道,将邮局建立在中间的那个村庄即可。也就是在a到b间建立一个邮局,若使消耗最小,则应该将邮局建立在(a+b)/2这个村庄上(可以通过画图知道)。 2、下面考虑建立多个邮局的问题,可以 阅读详情

相关推荐

dp四边形优化 poj 1160 Post Office题解

累加器传送门:http://blog.youkuaiyun.com/NOIAu/article/details/71775000题目传送门:https://cn.vjudge.net/problem/POJ-1160四边形优化算法讲解:http://blog.youkuaiyun.com/NOIAu/article/details/72514812题目:There is a straight highway with vi

Monica 1384

POJ 1160 Post Office(区间DP)

poj 1160 Post Office Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 21315   Accepted: 11522 Description There is a straight highway with villages alongside the highway...

Kruskal的博客 650

POJ 1160:Post Office 邮局经典DP

Post Office Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 17168   Accepted: 9270 Description There is a straight highway with villages alongside the high

2553

POJ1160 Post Office题解

POJ1160 Post Office 传送门 题目描述 在笔直的大道上建有nnn个大别墅,两个大别墅之间的距离是他们的横坐标之差的绝对值,保证大别墅之间的距离只能是整数,且没有别墅的位置是相同的。 现在需要建立mmm座大超市(m≤n)(m \leq n)(m≤n),大超市只能建立在别墅所在的位置,现在需要你写个程序,给定了所有别墅的位置和大超市的数目,计算出每个别墅离最近的大超市的距离总和的最小值。 输入格式 第一行包括两个整数nnn和mmm 第二行包括n个整数,代表别墅的位置,以升序的形式列出。

CoderZeng的博客 428

POJ--1160--Post Office

这是一道经典的DP题,数组开小了,POJ报WA,调试方向错了,调10年都是错的,要是在比赛的时候紧张的环境就更不容易发现错误了,就觉得在任何情况下保持冷静的头脑是一件很难得的事。 题目大意:给定在x轴上的N个村庄(就是所有村庄在一条直线上面),在这N 个村庄中选出M 个点作为邮局,使得每个村庄到最近的邮局的距离和最小,求出这个最小的距离和。 解题报告:假设在N 个村庄中选择一个村庄作为邮局使得

WoniuGe 614

poj1160DP(POST OFFICE 邮局问题)

题目链接: /*poj1160 题意:用数轴描述一条高速公路,有V个村庄,每一个村庄坐落在数轴的某个点上, 需要选择P个村庄在其中建立邮局,要求每个村庄到最近邮局的距离和最小。 状态:d[i][j]:前i个村庄建j个邮局的最小花费 转移方程:d[i][j] = min(d[i][j], dp[k][j-1]+ dis[k+1][i]); dis[i][j]表示村庄i到村庄j之间建一个邮局的花费

no pains,no gains 1422

【POJ 1160】Post Office

四边形优化dp转移经典题目~

Regina8023 1895

告别Colmap!在ROS2 Humble上,用Fast-LIVO2直接为3D Gaussian Splatting准备数据全流程

本文详细介绍了在ROS2 Humble环境下,使用Fast-LIVO2为3D Gaussian Splatting(3DGS)准备数据的全流程。通过优化Fast-LIVO2配置、实时数据同步机制和3DGS训练参数,显著提升了三维重建效率和质量,相比传统Colmap流程节省95%以上的预处理时间。适用于Ubuntu22.04系统,适合机器人及自动驾驶领域的三维重建应用。

weixin_28688385的博客 586

POJ - 1160 Post Office

POJ - 1160 思路: 平行四边形不等式优化dp dp[i][j]:前j个选i个作为邮局的最小答案 w[i][j]:i到j之间选一个作为邮局的最小距离和,肯定是选中间的 dp[i][j] = min{dp[i-1][k] + w[k+1][j]} 这个方程和石子归并类似,满足四边形不等式(一般打表找规律,不推不等式),所以决策变量满足决策单调性 假设s[i][j]为dp[i]...

weixin_34262482的博客 158

谈谈SAP顾问的几个发展趋势

大家新年好,今天想聊一下对SAP顾问发展趋势的一些个人见解。过去10多年得益于我国的经济发展,外资不断加大在中国的投资和中国企业的发展,SAP顾问行业得到了很大的发展和壮大。那么未来几年SAP顾问的职业发展到底怎么样呢?

syounger的专栏 2511

SAP 小结

关于SAP 开发的实习就要告一段落了,从刚开始接触,到现在已经6个月了,想要很简要的把自己对SAP的理解写出来,便于以后查阅(不定期更新)。 1. 什么是SAP? 广义的SAP,可以指代SAP公司以及SAP的各种产品,它的意义要在特定语境下才能确定。一般我们所说的SAP特指SAP ERP。 SAP ERP(enterprise resource planning)是一个企业信息系统。通过这个系

Remy的博客 1951

POJ1160, post office

POJ1160, post office。动态规划的经典题目。呃,又是经典题目,DP部分的经典题目怎就这么多。木有办法,事实就这样。 求:在村庄内建邮局,要使村庄到邮局的距离和最小。 设有m个村庄,分别为 V1 V2 V3 … Vm, 要建n个邮局,分别为P1 P2 P3 … Pn。 在DP的问题中,经常有从m个物体中选n个物体的情况,本题显然也属于这种情况。一般可以这样考虑:假

sjyttkl的专栏 660

王珊数据库系统概论第5版视频教材

目录 隐藏 说明:本课程共包括1种电子书、84个高清视频(共68课时)、1种纸质书(赠品)。 网授课程 王珊《数据库系统概论》(第5版)网授精讲班【共68课时】 序号 名称 课时 1 第1章 绪 论(1) 00:32:25 2 第1章 绪 论(2) 00:17:03 3 第1章 绪 论(3) 00:50:19 4 第1章 绪 论(4) 00:20:37 5 第1章 绪 论(5) 00:24:47 6 第2章 关系数据库(1) 00:47:23 7 第2章 关系数据库(2) 00:14:48 8 第2章 关系

mrtaoy96的博客 1145

Post Office POJ - 1160

Post Office  POJ - 1160  There is a straight highway with villages alongside the highway. The highway is represented as an integer axis, and the position of each village is identified with a

九大于七的博客 333

UG NX二次开发(C#)-外部模式-批量删除某些图层中的体对象和曲线对象

在 UG NX中,有时需要批量删除某文件夹下多个.prt文件中固定一些图层中的体对象和曲线对象,这时如果采用手动逐个打开模型,并选择针对的图层删除,即耗时也容易遗漏,因此采用外部模式来处理比较方便。本文介绍批量删除某些图层中的体对象和曲线对象。

GimiGimmy 3035

解读MTF曲线

怎样看MTF曲线 光学模量传递函数所表示的就是模量传递函数值随空间频率和像场位置变化的函数关系。它有很多种类型, 但最主要的两种类型就是MTF值与空间频率的关系和与像场半径(或像场角)之间的关系。 1、什么是空间频率 在讲清MTF曲线随空间频率的变化关系以前,我们先来弄明白什么叫“空间频率”。 空间频率(Spatial Frequency)的概念与分辨率的概念非常相似,单位都是“线对/毫米”(lp/mm)。但测试分辨率的标板是一组一组轮廓鲜明的黑白线条,每两条线条之间的距离,以及线条本身的宽度之比是.

camerall 1万+

poj1160Post Office

链接:http://poj.org/problem?id=1160 题意:有n个村庄在一条直线上,能建k个邮局,求所有村庄到离它最近的邮局的总和最小。 分析:四边形不等式优化dp的第一题。赵爽的动态规划加速原理之四边形不等式不错。对于这题我们设dp[i][j]表示前i个村庄建j个邮局的总和最小为多少,w[i][j]表示在第i个村庄到第j个村庄中建一个邮局并且i~j都去这个邮局的最小距离,那么w

Fsss 695

Classic AUTOSAR精讲专栏目录

欢迎大家来到钢琴上的汽车软件创建的《Classic AUTOSAR精讲系列专栏》,期待在这里能够与大家一起进步,分享成功,分享喜悦!下面蓝色的文章标题都是传送门,点击直接跳转到对应文章。

酒无忧的博客 3903

POJ1160 【Post Office】

POJ1160 【Post Office】DescriptionThere is a straight highway with villages alongside the highway. The highway is represented as an integer axis, and the position of each village is identified with a sin

This is Mendez. 1411

进阶06:C#连接TwinCAT 3使用ADS通讯

本文介绍了使用C#通过ADS协议与倍福TwinCAT3 PLC通讯的实现方法。主要内容包括:1)在两台电脑上安装TwinCAT3开发环境并建立网络连接;2)在TwinCAT中定义变量和结构体;3)使用C# Winform开发界面,通过TwinCAT.Ads.dll实现读写功能;4)实现主动读取和通知两种数据获取方式。详细说明了连接建立、变量定义、读写操作及事件通知的实现代码。该方案实现了对PLC寄存器数据的实时监控和操作,为工业控制系统的开发提供了参考。

weixin_38637405的博客 3688

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

poj 1160 Post Office

<br />//POJ 1160 解题报告:(引用以下两位大牛,写得不错)<br />//http://www.608088.com/show-51-1.html<br />//http://hi.baidu.com/rain_bow_joy/blog/item/ba85e922219b455b9822edfd.html<br />#include <cstdio><br />#include <cmath><br />int dist[310][310];<br />int v[310];<br />in

birdforever的专栏 455

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

【POJ】1160 Post Office

http://poj.org/problem?id=1160 题意:直线上有n个城市,其中有p个城市有邮局,问如何建p个邮局使得每个城市到最近的邮局和最小。(n<=300, p<=30&p<=n) #include <cstdio> #include <cstring> #include <algorithm> ...

162

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

上一篇: POJ 1152 An Easy Problem
下一篇: POJ 1166 The clocks
bobten2008
博客等级 码龄18年 153粉丝 157原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值