【四边形不等式】POJ1160[IOI2000]-Post Office
【题目大意】
v个村庄p个邮局,邮局在村庄里,给出村庄的位置,求每个村庄到最近邮局距离之和的最小值。
【思路】
四边形不等式,虽然我并不会证明:(
dp[i][j]表示前i个村庄建j个邮局的最小值,w[i][j]表示在i到j之间建立一个邮局的最小值。w[i][j]显然取i~j的中位数,可以在O(1)时间内求出。
显然dp[i][j]=min{dp[k][j-1]+w[k+1][i]}。
傻傻写错i和j……
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
const int MAXV=;
const int MAXP=;
const int INF=0x7fffffff;
int v,p;
int dis[MAXV],sum[MAXV],w[MAXV][MAXV];//w[i][j]表示在[i,j]间建立一个邮局的最小代价
int s[MAXV][MAXP],dp[MAXV][MAXP]; void init()
{
scanf("%d%d",&v,&p);
sum[]=;
for (int i=;i<=v;i++) scanf("%d",&dis[i]);
sort(dis+,dis+v+);
for (int i=;i<=v;i++) sum[i]=dis[i]+sum[i-];
for (int i=;i<=v;i++)
{
w[i][i]=;
for (int j=i+;j<=v;j++)
{
if ((i+j)%==) w[i][j]=sum[j]-sum[(i+j)/]-sum[(i+j)/-]+sum[i-];
else w[i][j]=sum[j]-sum[(i+j)/]-sum[(i+j)/-]+sum[i-]-dis[(i+j)/];
}
}
} void solve()
{
memset(dp,,sizeof(dp));
for (int i=;i<=v;i++) dp[i][]=w[][i];
for (int j=;j<=p;j++)
{
s[v+][j]=v-;
for (int i=v;i>=j;i--)
{
for (int k=s[i][j-];k<=s[i+][j];k++)
{
if (dp[i][j]>dp[k][j-]+w[k+][i])//一开始这里敲成了w[k+1][j]
{
dp[i][j]=dp[k][j-]+w[k+][i];
s[i][j]=k;
}
}
}
}
printf("%d",dp[v][p]);
} int main()
{
init();
solve();
return ;
}
【四边形不等式】POJ1160[IOI2000]-Post Office的更多相关文章
- [poj1160][IOI2000]Post Office【动态规划】
传送门 https://vjudge.net/problem/POJ-1160#author=SCU2018 题目描述 在一条水平的公路上建有n个小屋,两个小屋间的距离是它们的横坐标之差的绝对值.保证 ...
- POJ 1160 四边形不等式优化DP Post Office
d(i, j)表示用i个邮局覆盖前j个村庄所需的最小花费 则有状态转移方程:d(i, j) = min{ d(i-1, k) + w(k+1, j) } 其中w(i, j)的值是可以预处理出来的. 下 ...
- IOI2000 Post Office (POJ1160)
前言 昨天XY讲课!讲到这题!还是IOI的题!不过据说00年的时候DP还不流行. 题面 http://poj.org/problem?id=1160 分析 § 1 中位数 首先我们考虑,若有x1 & ...
- POJ-1160 Post Office (DP+四边形不等式优化)
题目大意:有v个村庄成直线排列,要建设p个邮局,为了使每一个村庄到离它最近的邮局的距离之和最小,应该怎样分配邮局的建设,输出最小距离和. 题目分析:定义状态dp(i,j)表示建设 i 个邮局最远覆盖到 ...
- [POJ1160] Post Office [四边形不等式dp]
题面: 传送门 思路: dp方程实际上很好想 设$dp\left[i\right]\left[j\right]$表示前$j$个镇子设立$i$个邮局的最小花费 然后状态转移: $dp\left[i\ri ...
- 石子合并(四边形不等式优化dp) POJ1160
该来的总是要来的———————— 经典问题,石子合并. 对于 f[i][j]= min{f[i][k]+f[k+1][j]+w[i][j]} From 黑书 凸四边形不等式:w[a][c]+w[b][ ...
- BZOJXXXX: [IOI2000]邮局——四边形不等式优化初探
貌似$BZOJ$上并没有这个题... 是嫌这个题水了么... 还是要氪金权限号??? 这里附上洛谷的题面:洛谷P4767 [IOI2000]邮局 题目描述 高速公路旁边有一些村庄.高速公路表示为整数轴 ...
- POJ.1160.Post Office(DP 四边形不等式)
题目链接 \(Description\) 一条直线上有n个村庄,位置各不相同.选择p个村庄建邮局,求每个村庄到最近邮局的距离之和的最小值. \(Solution\) 先考虑在\([l,r]\)建一个邮 ...
- POJ 1160 Post Office (四边形不等式优化DP)
题意: 给出m个村庄及其距离,给出n个邮局,要求怎么建n个邮局使代价最小. 析:一般的状态方程很容易写出,dp[i][j] = min{dp[i-1][k] + w[k+1][j]},表示前 j 个村 ...
随机推荐
- 利用Addon Domain和A记录使两个域名同时指向同一个网站
今天碰到这样的需求:已有网站A.com, 以及新注册的域名B.net, 现需要将B.net指向与A.com相同的内容. 这里提出的方法是在空间后台添加Addon domain, 以及在域名B.net后 ...
- yii2-widget-fileinput英文文档翻译
源地址:http://plugins.krajee.com/file-input 该插件是为bootstrap开发的增强版h5文件上传插件,具有多文件预览,多文件选择等功能.该插件提供了基于boots ...
- 首次成功的web渗透
web渗透 今天给大家讲一个最近做的一件令我振奋的一件事情 渗透培训刚刚结束的第二天 我在公网上挖到了我人生中的第一个站 总体来说个人真的很振奋人心 这个网站还没有进行更改但我已经通知了他们 ...
- windos8设置cpu数量和内存大小
转自:http://smilejay.com/2012/03/windows_cpu_memory_setting/ Windows 8(测试版)在作为Xen Guest中的benchmark测试.我 ...
- ASP连接读写ACCESS数据库实例(转)
(一) 数据库的选择:有许多的数据库你可以选择,SQL SERVER.ACCESS(*.mdb).EXCEL(*.xls).FOXPRO(*.dbf)甚至普通的文本文件(*.txt)都可以达到存储 ...
- 为什么需要学UML建模
今天在看<设计模式>的时候,看到了许多的UML模型图,案例中作者用极少的代码却能讲清楚讲好设计模式的背景和思想,抽象成一张张的UML图就能很好的review和复盘,这对于在工作中习惯用代码 ...
- Sublime Text 2.0.2,Build 2221注册码
Help ->Enter License,输入如下序列号: ----- BEGIN LICENSE ----- Andrew Weber Single User License EA7E-855 ...
- sin()函数的实现
计算如下公式,并输出结果: 其中r.s的值由键盘输入.sin x的近似值按如下公式计算,计算精度为10-10: 程序说明: #include <math.h>和#include<cm ...
- js_数组对象的浅克隆
如果再考虑更奇葩更复杂的情况,例如我们定义: var obj = [{ "a": { "a1": ["a11", "a12&q ...
- bzoj 1864
思路:随便dp一下 #include<bits/stdc++.h> #define LL long long #define fi first #define se second #def ...