邮局问题

news/2024/10/19 18:20:06/

原题:POJ 1160

题意:

一些村庄被建立在一条笔直的高速公路边上,我们用一条坐标轴来描述这条高速公路,每一个村庄的坐标都是整数,没有两个村庄坐标相同。两个村庄间的距离,定义为它们的坐标值差的绝对值。我们需要在一些村庄建立邮局——当然,并不是每一个村庄都必须建立邮局,邮局必须被建立在村庄里,因此它的坐标和它所在的村庄坐标相同。每个村庄使用离它最近的那个
邮局,建立这些邮局的原则是:所有村庄到各自所使用的邮局的距离总和最小。

你的任务是编写一个程序,在给定了每个村庄坐标和将要建立的邮局数之后,按照上述原则,合理地选择这些邮局的位置。
求出的所有村庄到距离它最近的邮局的距离总和.

解析

首先要知道点L到点R间放一个邮局的最短距离:
这里写图片描述
很明显奇数个时当取最中间的那个点的时候最短(不是坐标的中间,而是下标的中间),同理,偶数个时取中间两个点之间的任何位置都可以。

对于这题我们需要预处理点L和点R之间建立一个邮局的最短距离和w[l][r],状态转移方程为w[l][r] = w[l][r-1]+a[r]-a[(r+l)>>1]
上图解释:
这里写图片描述
由前面讲的知识可以得到1~5的距离和==1~4的距离和+a[5]-a[3],再画一下1~6的==1~5的+a[6]-a[3],总结为w[l][r] = w[l][r-1]+a[r]-a[(r+l)>>1]

最后是dp数组dp[i][j]代表从起点到i点间建立j个邮局的情况
是不是就有dp[i][j]=min(dp[i][j],dp[k][j-1]+w[k+1][i])?

eg: dp[10][3]=dp[6][2]+w[7][10],1~10建3个邮局可以由1~6建2个邮局加上7~10建一个邮局转化而来

代码

#include<iostream>
#include<stdio.h>
#include<string.h>
using namespace std;
const int INF = ~0U>>1;int a[309];
int dp[309][39];
int w[309][309];
int n,m;
int main(){while(cin>>n>>m){for(int i=1;i<=n;i++)scanf("%d",&a[i]);memset(w,0,sizeof(w));for(int i=1;i<=n;i++){for(int j=i+1;j<=n;j++){w[i][j]=w[i][j-1]+a[j]-a[(i+j)>>1]; }}for(int i=1;i<=n;i++){dp[i][1]=w[1][i];dp[i][i]=0;//一个邮局就是w[1][i] }for(int i=1;i<=n;i++){//末邮局位置 for(int j=2;j<=min(m,i);j++){//邮局个数,当然比点的数量少 dp[i][j] = INF; for(int k=j;k<=i-1;k++){//枚举可转移的位置,当然比邮局个数大 dp[i][j]=min(dp[i][j],dp[k][j-1]+w[k+1][i]);}}}printf("%d\n",dp[n][m]);}
} 

http://www.ppmy.cn/news/615862.html

相关文章

怎样在手机自带的邮件服务器,如何在手机上收发学校邮箱信件

学校邮箱系统支持手机app收发邮件。设置步骤如下&#xff1a;(手机除了界面略有区别外&#xff0c;操作基本类似) 1、进入手机——设置——账户——邮件 2、选择账户设置 3、选择添加账户 4、选择“其他” 5、输入您的邮箱地址和密码 请注意此处及下方几个页面中&#xff0c;要…

老板邮局android版本,老板邮局首推Bossmail手机邮 已上架APPStore

10月24日老板邮局企业邮箱系统正式对外发布自主开发的手机客户端“Bossmail手机邮”&#xff0c;这是老板邮局企业邮箱系统首次推出的邮局手机客户端。凭借其良好的产品品质&#xff0c;获得APP Store审核通过并成功上架。 据“Bossmail手机邮”项目负责人介绍&#xff0c;老板…

企业邮箱如何登录手机邮箱?

在没有入职大厂前真不知道企业邮箱是什么&#xff0c;如何使用企业邮箱&#xff1f;TOM企业邮箱是个国际邮箱&#xff0c;我们公司的外贸部使用的就是这个邮箱&#xff0c;后来给我们每个人都分配了一个账号。听外贸部同事说&#xff0c;这个邮箱能用微信收发邮件&#xff0c;特…

免费手机邮箱,WAP客掌上邮

您出差在外的时候是否有收取邮件的需求呢&#xff1f;WAP客掌上邮件目前正在免费注册中&#xff01;上http://wapke.cn就可以免费注册成功&#xff01; 这样您的餐厅机场地铁...中都可以随意邮了&#xff01; ...... [ dig it , link http://wapke.cn]

如何使用手机登录邮箱?

你现在还在用什么登录邮箱呢&#xff1f;电脑、平板还是手机呢&#xff1f;办公将常用到的电脑就不必多说了&#xff0c;使用电脑登录邮箱那当然是轻车熟路了&#xff0c;无论是用客户端还是网页端&#xff0c;都是会经常用的&#xff0c;今天就来说说很多人都不知道的邮箱登录…

手机邮箱如何注册使用?邮箱在手机上使用有什么便捷之处?

我是一个大二的学生&#xff0c;为了保研学分&#xff0c;我踏上了实习职场道路。之前在某一回面试时&#xff0c;我需要带着我的简历去参加面试&#xff0c;当时忘记带我的纸质简历了&#xff0c;心想完蛋了&#xff0c;该怎么解决这个尴尬状况。 后来有想起来我在网上用TOMV…

手机邮箱怎么注册申请,手机邮箱在哪里找到,电子邮箱怎么弄?

邮箱作为办公经常使用的工具&#xff0c;当可以在手机操作办公时&#xff0c;将会变得非常的方便&#xff01;邮箱既可以用来沟通还可以用来进行文件传输&#xff0c;安全性极强。文件长时间保存云端&#xff0c;邮箱容量是无限使用的&#xff0c;而且每个电子邮箱都是独一无二…

手机号电子邮箱怎么填写?

邮箱的格式是由账号名称域名组成&#xff0c;而账号名称可以是人名、公司名称以及手机号&#xff0c;这些都可以在注册邮箱时自行设定&#xff0c;TOM企业邮箱开通手机号邮箱仅需两分钟。 手机号电子邮箱 企邮开通好后会先拿到一个管理员账号&#xff0c;可以通过该账号进行开…