![](https://img-blog.csdnimg.cn/20190918140158853.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
动态规划优化
文章平均质量分 65
dp优化技巧
wind__whisper
qwq
展开
-
P5469 [NOI2019] 机器人(拉格朗日插值、区间dp)
拉格朗日插值原创 2022-07-25 14:11:41 · 231 阅读 · 0 评论 -
P6773 [NOI2020] 命运(dp、线段树合并)
dp、线段树合并原创 2022-06-30 11:07:42 · 270 阅读 · 0 评论 -
P6772 [NOI2020] 美食家(矩阵快速幂)
矩阵快速幂原创 2022-06-27 23:43:25 · 216 阅读 · 0 评论 -
P4849 寻找宝藏(模板:四维偏序)
cdq套cdq原创 2022-03-25 14:46:02 · 264 阅读 · 0 评论 -
洛谷P4292:重建计划(点分治、单调队列)
点分治一道很好的练习题原创 2021-12-04 00:39:00 · 228 阅读 · 1 评论 -
CSP2019&洛谷P5665:划分(单调队列,高精度)
解析自己写的时候写了二维单调队列优化的64分一次过还是可以满意了啦正解的关键结论是最优的方案的最后一段一定尽可能的短原因嘛…显然 贪心的想,再最后一段的段首可以往前放的情况下肯定是要往前放的,这样代价更小,同时对后面的选取也更加有利这个性质是可以递归的考虑如何求以i结尾的最后一段的最短长度设以iii为末端的最短段的上一段的段尾在posipos_iposi设sis_isi是[1,i][1,i][1,i]的前缀和那么posipos_iposi就是满足:si−sj>=sj−spos原创 2021-10-16 23:55:47 · 171 阅读 · 0 评论 -
跳房子(ybtoj-单调队列)
文章目录题目描述解析代码thanks for reading!题目描述洛谷传送门跳房子,也叫跳飞机,是一种世界性的儿童游戏,也是中国民间传统的体育游戏之一。跳房子的游戏规则如下:在地面上确定一个起点,然后在起点右侧画 n 个格子,这些格子都在同一条直线上。每个格子内有一个数字(整数),表示到达这个 格子能得到的分数。玩家第一次从起点开始向右跳,跳到起点右侧的一个格子内。第二次再从当前位置继续向右跳,依此类推。规则规定:玩家每次都必须跳到当前位置右侧的一个格子内。玩家可以在任意时刻结束游戏,获得的原创 2021-05-08 23:38:26 · 309 阅读 · 0 评论 -
粉刷木板(ybtoj-单调队列)
题目描述解析头疼定义dp[i]:只用前i块板的最大价值对于新加入的一个木匠:不难写出dp转移式:dp[i]=max(dp[k]+(i-k)*p)k表示开始刷的前一个其中i>=si-k<=l;要是这么转移会是n^2m所以我就不废了。。。其实离正解很接近了把上面移一下项:dp[i]=max(dp[k]-k*p)+p*i所以我们就是每次询问i前面一定长度的dp[k]-k*p 的最大值就可以维护一个单调队列来解决了复杂度:nm注意!这里与简单的滑动窗口并非完全原创 2021-05-03 19:47:26 · 149 阅读 · 0 评论 -
洛谷P4463:calc(dp、拉格朗日插值)
很妙的拉格朗日插值练习原创 2022-01-04 13:51:13 · 264 阅读 · 0 评论 -
P2305 [NOI2014] 购票(点分治、斜率优化)
利用点分治解决树上的斜率优化问题原创 2021-12-04 17:39:31 · 269 阅读 · 0 评论 -
洛谷P2497:基站建设(splay、斜率优化)
所谓splay斜率优化dp,就是利用splay和斜率对dp进行优化(逃)解析在斜优的时候,有时我们会发现我们插入的点的横坐标并不单调这个时候我们就无法利用单调队列维护凸包了这时,我们就要请出今天的主角:splay插点splay斜优最容易错的一个地方我们维护一个以结点横坐标作为关键值的splay结点记录第信息有:左右儿子、父亲、xy坐标、分别与左右两边第一个结点的斜率注意这个第一个结点不一定是左右儿子!特别的,没有儿子时赋值成正(右)负(左)无穷step1首先,让我们把结点按照s.原创 2021-10-29 01:26:19 · 258 阅读 · 0 评论 -
洛谷P6302:回家路线(斜率优化)
解析《论什么是合理的实现》本题dp的斜率式子还是不难恶心在其他地方由于不能时光倒流,新点必须在q时间后再插入因此我们开一个堆来按找q升序排列,算完一个点就塞到堆里,每次把当前可以插入的点一起弹出来插入一个重要的技巧是只存储火车的编号,就可以很阳间的使用宏定义vector虽然不能popfront,但是可以把begin给erase掉一定要记得判断分母的符号!!!代码#include<bits/stdc++.h>using namespace std;const int N原创 2021-10-28 18:19:50 · 162 阅读 · 0 评论 -
洛谷P1912:诗人小G(二分栈、决策单调性)
二分栈,就是通过二分维护的栈(逃)解析本题的决策单调性可以说是显然但是本题是同维度(其实只有一维)自左向右转移,分治的写法是不能奏效的所以我们使用决策点调性的另一种实现方法:二分栈具体来说,维护[1,n]各自的最优转移点一开始的转移点全是0,把三元组(0,1,n)(0,1,n)(0,1,n)push入栈,分别表示转移点和左右端点然后从1扫到n扫到i的时候,利用i当前的最优决策点进行转移然后尝试更新后面的最优决策点不断取出栈顶,如果栈顶区间在 l 的位置还是不如当前的转移,显然这个.原创 2021-10-26 19:27:03 · 411 阅读 · 0 评论 -
YBTOJ:采矿战略(线段树维护dp、树链剖分)
文章目录题目描述解析代码题目描述所谓线段树维护dp,就是在线段树上维护dp(逃)解析把树剖一下后就变成了区间问题考虑建一棵线段树,每一个结点都是一个背包这样就能区间查询,也能带修了这种做法复杂度其实并不理想,是logn*dp合并复杂度本题背包就是m2lognm^2lognm2logn但是如果出题人想考这个肯定会在数据范围上放你一条生路啦(调了半天结果树剖挂了就离谱)代码#include<bits/stdc++.h>using namespace std;#de原创 2021-09-24 23:24:04 · 132 阅读 · 0 评论 -
YBTOJ&洛谷P3195:玩具装箱(斜率优化dp)
传送门文章目录前言解析代码前言斜率优化dp,就是利用斜率优化的dp(逃)解析第一道斜优的题分析题目设sum[i]为1-i的c的前缀和容易写出dp转移式:dpi=min(dpj+(sumi−sumj+i−j−1−L)2)dp_i=min(dp_j+(sum_i-sum_j+i-j-1-L)^2)dpi=min(dpj+(sumi−sumj+i−j−1−L)2)但是平方转移会T掉考虑优化设:ai=sumi+ia_i=sum_i+iai=sumi+ibi=sumi+i原创 2021-09-14 16:16:15 · 154 阅读 · 1 评论