洛谷P4767 [IOI2000]邮局(决策单调DP,四边形不等式优化)

题面链接:P4767 [IOI2000]邮局

最近的这些有关数学的真的是做的我头大,但不得不说决策dpdpdp真的很好用,这里用到了四边形不等式优化,理解的还不是很深,写一篇题解来记录一下。
在本题中我们用dp[i][j]dp[i][j]dp[i][j]前iii个点放jjj个快递站时,前iii个点的最小距离,用w[i][j]w[i][j]w[i][j]表示区间[i,j][i,j][i,j]放一个快递站时,[i,j][i,j][i,j]内点到快递站的最小距离,显然可以列出状态转移方程:dp[i][j]=∑k=0idp[k][j−1]+w[k+1][i]dp[i][j]=\sum_{k=0}^idp[k][j-1]+w[k+1][i]dp[i][j]=∑k=0i​dp[k][j−1]+w[k+1][i],www可以预处理处理,但需要枚举k导致三层循环,很显然复杂度并不能满足我们的要求,此时我们就需要使用四边形不等式优化了,首先我们需要知道,如果某二元函数www满足:
w(i,j)+w(i+1,j+1)<w(i+1,j)+w(i,j+1)w(i,j)+w(i+1,j+1)<w(i+1,j)+w(i,j+1)w(i,j)+w(i+1,j+1)<w(i+1,j)+w(i,j+1)
则称其满足四边形不等式,显然www满足上述关系,此时我们需要用到四边形不等式的两个性质
1:


在本题中,因为www满足四边形不等式,而dp[i][j]=∑k=0idp[k][j−1]+w[k+1][i]dp[i][j]=\sum_{k=0}^idp[k][j-1]+w[k+1][i]dp[i][j]=∑k=0i​dp[k][j−1]+w[k+1][i],所以dp也满足四边形不等式,若用数组s[i][j]s[i][j]s[i][j]储存dp[i][j]dp[i][j]dp[i][j]的最优转移点,那么我们可以利用定理2得知, s[i][j−1]≤s[i][j]≤s[i+1][j]s[i][j-1] \leq s[i][j] \leq s[i+1][j]s[i][j−1]≤s[i][j]≤s[i+1][j],这样我们就使得复杂度成功降低一维。

注意: 因为s[i][j−1]≤s[i][j]≤s[i+1][j]s[i][j-1] \leq s[i][j] \leq s[i+1][j]s[i][j−1]≤s[i][j]≤s[i+1][j],所以需要倒着枚举i

细节见代码及注释:

int dp[3010][3010];//前i个点放j个快递站时,前i个点的最小距离
int w[3010][3010];//区间[i,j]放一个快递站时,[i,j]内点的最小距离
int s[3010][3010];//dp[i][j]的最优转移点
int v[3010];
int n,m;
void init(){//预处理wfor(int i=1;i<=n;i++){for(int j=i+1;j<=n;j++){w[i][j]=w[i][j-1]+v[j]-v[(i+j)/2];//邮局肯定是放中间最好}}
}
int main(){/*cout<<setiosflags(ios::fixed)<<setprecision(8)<<ans<<endl;//输出ans(float)格式控制为8位小数(不含整数部分)*/
/*cout<<setprecision(8)<<ans<<endl;//输出ans(float)格式控制为8位小数(含整数部分)*/ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);//同步流cin>>n>>m;for(int i=1;i<=n;i++){cin>>v[i];}init();memset(dp,inf,sizeof(dp));//初始化,为下面做准备dp[0][0]=0;for(int j=1;j<=m;j++){s[n+1][j]=n;//一会会用,所以提前赋好值for(int i=n;i>=1;i--){//因为dp[i][j]的最优转移点s[i][j-1]<=k<=s[i+1][j],所以倒序int min=inf,mp;for(int k=s[i][j-1];k<=s[i+1][j];k++){//查找转移点if(dp[k][j-1]+w[k+1][i]<min){min=dp[k][j-1]+w[k+1][i];mp=k;}}s[i][j]=mp;//更新dp[i][j]=min;}}cout<<dp[n][m]<<endl;return 0;
}

洛谷P4767 [IOI2000]邮局(决策单调DP,四边形不等式优化)相关推荐

  1. Codevs 3002 石子归并 3(DP四边形不等式优化)

    3002 石子归并 3 时间限制: 1 s 空间限制: 256000 KB 题目等级 : 钻石 Diamond 题目描述 Description 有n堆石子排成一列,每堆石子有一个重量w[i], 每次 ...

  2. 【HDU 4905 多校联合】The Little Devil II【DP+四边形不等式优化】

    题意:给出一个数列,每次你可以选择相邻的两个数字进行求GCD,然后得到的数字把这两个数字替代,得到GCD的权值,求最后剩下一个数字后的最大的权值(权值初始是数列的和) 思路:定义dp[i][j]表示区 ...

  3. HDU-2829 Lawrence (DP+四边形不等式优化)

    题目大意:有n个敌方军火库呈直线排列,每个军火库有一个值vi,并且任意相邻的两个库之间都有通道相连.对于任意一条连起来的军火库链,它对我方的威胁可以用函数w(i,j)表示为:w(i,j)=vi*sum ...

  4. 线性DP 四边形不等式优化 hdu3506

    当函数w(i,j)满足 w(a,c)+w(b,d) <= w(b,c)+w(a,d) 且a<=b< c <=d 时,我们称w(i,j)满足四边形不等式..   当函数w(i, ...

  5. BZOJXXXX: [IOI2000]邮局——四边形不等式优化初探

    貌似$BZOJ$上并没有这个题... 是嫌这个题水了么... 还是要氪金权限号??? 这里附上洛谷的题面:洛谷P4767 [IOI2000]邮局 题目描述 高速公路旁边有一些村庄.高速公路表示为整数轴 ...

  6. 洛谷P2507 [SCOI2008]配对 题解(dp+贪心)

    洛谷P2507 [SCOI2008]配对 题解(dp+贪心) 标签:题解 阅读体验:https://zybuluo.com/Junlier/note/1299251 链接题目地址:洛谷P2507 [S ...

  7. Post Office(邮局)之四边形不等式优化dp

    目录 前言 题目 解析 四边形不等式优化 何为四边形不等式 何为区间包含单调性 四边形不等式性质 DP 优化 参考代码(附注释) 前言 可以说这道题我可花费了很大功夫才理解的. 其中有些小技巧也是我钻 ...

  8. [转]四边形不等式优化dp(POJ1160)

    四边形不等式优化动态规划原理: 1.当决策代价函数w[i][j]满足w[i][j]+w[i'][j']<=w[I;][j]+w[i][j'](i<=i'<=j<=j')时,称w ...

  9. 【决策单调性分治优化/四边形不等式优化】监狱警卫

    前言 模板一套就AC了... 题目 guardians.cpp 1S/128M 你负责将监狱的警卫指派到最疯狂的罪犯所在的监狱. 一共有N间牢房排列成一行,编号从1~N. 第i间牢房恰好容纳了一个疯狂 ...

  10. DP 最优二叉树 的四边形不等式优化

    最优比例二叉树.代价函数cost 满足 对任意 a <= b <= c <= d 有 cost[a,c] + cost[b,d] <= cost[a,d] + cost[b,c ...

最新文章

  1. springcloud 之 bus 消息总线
  2. Windows上安装Apache
  3. SQL查询过滤Where子句用法
  4. 值得推荐的微软技术公众号推荐
  5. 斗地主你什么时候才会托管?(.NET中的托管于非托管)
  6. php网页,想弹出对话框, 消息框 简单代码
  7. 不同库表数据库迁移工具_Microsoft提供的数据库迁移助手工具概述
  8. [UOJ386]鸽子固定器
  9. 分布式爬虫原理之Scrapy分布式实现
  10. SIGGRAPH Asia 2018 papers
  11. 初探Windows用户态调试机制
  12. 【计算机】【转】win10添加XPS Viewer功能(管理可选功能)
  13. 考公 | 粉笔网课笔记——申论 吴越
  14. 《大数据时代》读后感
  15. qtcpsocket断开_关于QSocket的释放的一个需要注意的情况(必须先断开连接)
  16. ubuntu64 使用gcc -m32编译成32bit程序
  17. 2023阿里云账号注册流程(多种注册方法随便选)
  18. 音视频SDK封装截图
  19. 联想ideapad300-15isk加内存和固态硬盘拆机改造详细步骤
  20. 使用原始套接字Raw Socket实现数据包嗅探

热门文章

  1. 不会画关系图?5 类图形为你展示—变量间相互关系—提供示例与完整代码-ggplot2-geom_point-ComplexHeatmap-pheatmap-ggpairs
  2. Ruff 将助力广东金融高新区“区块链+”金融科技创新与应用落地
  3. Winedit 下载第三方库
  4. python自然语言_Python自然语言处理 - 随笔分类 - 牛皮糖NewPtone - 博客园
  5. html写信模板,求给签证官写信的模板。。。
  6. Python原生爬虫 --- 50行代码爬取某直播网站主播名和人气值
  7. python--pandas长宽数据转换
  8. joc杂志影响因子2019_2019年4月1日 部分化学期刊即时影响因子预测(仅供参考)...
  9. 小学生遭校长拳击内脏出血 求医救命钱遭抢(图)
  10. DWF低代码开发技术及其在数字化运营和运维平台建设中的应用