洛谷 P4072 [SDOI2016]征途 斜率优化DP 题目描述 \(Pine\) 开始了从 \(S\) 地到 \(T\) 地的征途. 从\(S\)地到\(T\)地的路可以划分成 \(n\) 段,相邻两段路的分界点设有休息站. \(Pine\)计划用\(m\)天到达\(T\)地.除第\(m\)天外,每一天晚上\(Pine\)都必须在休息站过夜.所以,一段路必须在同一天中走完. \(Pine\)希望每一天走的路长度尽可能相近,所以他希望每一天走的路的长度的方差尽可能小. 帮助\(Pine\)求出…
题目大意:给你一颗$n$个点的有根树,相邻两个点之间有距离,我们可以从$x$乘车到$x$的祖先,费用为$dis\times P[x]+Q[x]$,问你除根以外每个点到根的最小花费. 数据范围:$n≤10^6$. 此题我们显然$dp$,列出方程为$f[x]=min\{f[y]+dis(x,y)\times P[x]+Q[x]\}$,其中$y$为$x$的祖先. 不难看出可能是一个斜率优化的式子,我们往下推推 设$i$是$j$的祖先,且从$i$出转移比从$j$处转移劣,不难列出: $f[i]+dis(…
题目链接 题意:给出一棵树,\(1\) 号点为根,边上有边权. 每个点有两个参数 \(p_i,q_i\) 如果你想从 \(i\) 号点到与其距离为 \(d\) 的 \(j\) 号点,那么你需花费 \(d \times p_i+q_i\). 对于每个 \(i \in [2,n]\),求出:假设你站在 \(i\) 号点,到达 \(1\) 号点的最小花费. \(1 \leq n \leq 10^6\) 树上斜率优化 dfs 求出 \(i\) 到根节点的路径长度为 \(d_i\). 朴素的 \(dp\)…
有点类似NOI2014购票 首先有方程$f(i)=min\{f(j)+(dep_i-dep_j)*p_i+q_i\}$ 这个显然是可以斜率优化的... $\frac {f(j)-f(k)}{dep_j-dep_k}<p_i$ $p_i$是单调的,于是可以单调队列,当遍历完一个子树的时候,必须复原单调队列到进入这棵子树前的样子,这个用可持久化线段树维护可持久化数组显然可做... 当然有更聪明的方法. 单调队列队头出去的时候实际上队列信息不会被覆盖,于是恢复左端点只要记录进入当前点前的左端点即可.…
[NOI2014]购票 链接:http://uoj.ac/problem/7 因为太麻烦了,而且暴露了我很多学习不扎实的问题,所以记录一下具体做法. 主要算法:点分治+凸包优化斜率DP. 因为$q_i$不单调,所以需要在凸包上二分求最优解. 因为有$L_i$的限制,并且删除凸包左边的点会导致一些问题,所以就改变枚举顺序(倒着加入祖先链),使问题变成不用删点.因此直接套用凸包二分求解的模板. 大致流程: Tree_Divide_conquer(fa[x]).//先求出祖先链的Dp值 Get_all…
E. Product Sum   Blake is the boss of Kris, however, this doesn't spoil their friendship. They often gather at the bar to talk about intriguing problems about maximising some values. This time the problem is really special. You are given an array a o…
https://scut.online/p/365 https://www.luogu.org/problemnew/solution/P2365 写这篇的时候还不是很明白,看一下这个东西. https://www.cnblogs.com/CreeperLKF/p/9045491.html 还是不懂,去问学长了,叫做wqs二分.要求恰好选m个的这种题,每个物品放一个附加权值C. https://blog.csdn.net/chenxiaoran666/article/details/833817…
传送门 思路: 最朴素的dp式子很好考虑:设\(dp(i,j)\)表示前\(i\)个任务,共\(j\)批的最小代价. 那么转移方程就有: \[ dp(i,j)=min\{dp(k,j-1)+(sumT_i+S*j)*(sumC_i-sumC_k)\} \] 为什么有个\(S*j\)呢,因为前面的批次启动会对后面的答案有影响. 但是分析复杂度是\(O(n^3)\)的,肯定不行. 考虑一下为什么需要第二个状态呢?是为了消除后效性,因为后面的状态不知道总共启动了几次. 但我们可以把费用提前计算,一次启…
做的第一道斜率优化\(DP\)QwQ 原题链接1/原题链接2 首先考虑\(O(n^2)\)的做法:设\(f[i]\)表示在\(i\)处建仓库的最小费用,则有转移方程: \(f[i]=min\{f[j]+\sum\limits_{k=j+1}^{i}P[k](X[i]-X[k])\}+C[i]\) 于是我们枚举\(i\),再从\(i-1\)开始从大到小枚举\(j\),并记录一个前缀和,每次更新一下\(f[i]\).洛咕上貌似拿了66分,数据太水: #include <cstdio> using…
传送门 一道斜率优化dp入门题. 是这样的没错... 我们用dis[i]表示i到第三个锯木厂的距离,sum[i]表示前i棵树的总重量,w[i]为第i棵树的重量,于是发现如果令第一个锯木厂地址为i,第二个地址为j,则有 total=[∑i=1ndis[i]∗w[i]]−dis[i]∗w[i]−dis[j]∗(sum[j]−sum[i])" role="presentation" style="position: relative;">total=[∑n…
点此看题面 大致题意: 你可以对一个序列进行\(k\)次分割,每次得分为两个块元素和的乘积,求总得分的最大值. 区间\(DPor\)斜率优化\(DP\) 这题目第一眼看上去感觉很明显是区间\(DP\). 但是,一看数据范围,\(n\le100000\),这是要上天的节奏! 不过,再看\(m\le200\),比较显然应该是\(O(nm)\)的时间复杂度. 实际上,这题的确是可以用斜率优化\(DP\)来做到\(O(nm)\)的. 推性质 首先,我们要知道一个性质:将一个区间进行若干次分割,分割的顺序…
qwq 我感觉这都已经不算是斜率优化\(dp\)了,感觉更像是qwq一个\(下凸壳优化\)转移递推式子. qwq 首先我们先定义几个数组 \(sw[i]\)表示\(w[i]\)的前缀和 \(val[i] = w[i]\times d[i]\) \(sum[i]\)表示\(val[i]\)的前缀和. \(dis[i]\)表示\(i\)到山脚下的距离 \(f[i]\)表示在\(i\)建第一个厂的最小代价. 一个比较容易发现的性质是,厂一定是建在老树的点上. 因为考虑我们在假设我们现在在一个非老树的点…
先摆上学习的文章: orzzz:斜率优化dp学习 Accept:斜率优化DP 感谢dalao们的讲解,还是十分清晰的 斜率优化$DP$的本质是,通过转移的一些性质,避免枚举地得到最优转移 经典题:HDU 3507 ($Print$ $Article$) 状态数$O(N)$,单次转移$O(N)$的做法还是比较容易的 令dp[i]表示打印完第$i$个单词的最小花费,$S[i]$表示$C[1]$到$C[i]$的前缀和,则转移方程为 \[dp[i]=min\{dp[j]+(S[i]-S[j])^{2}\…
前言 斜率优化\(DP\)是难倒我很久的一个算法,我花了很长时间都难以理解.后来,经过无数次的研究加以对一些例题的理解,总算啃下了这根硬骨头. 基本式子 斜率优化\(DP\)的式子略有些复杂,大致可以表示成这样: \[f_i=min_{j=1}^{i-1}(A(j)-B(j)*S(i)+C(i))\] 其中\(A(j)\)和\(B(j)\)是两个只与\(j\)有关的函数,\(S(i)\)和\(C(i)\)是两个只与\(i\)有关的函数,式子中的\(min\)其实也可以替换成\(max\),但这里…
不想写什么详细的讲解了...而且也觉得自己很难写过某大佬(大米饼),于是建议把他的 blog 先看一遍,然后自己加了几道题目以及解析...顺便建议看看算法竞赛(蓝皮书)的 0x5A 斜率优化(P294) 部分 这是——大米饼大佬 看完了大米饼同志对斜率优化的介绍,下面我来稍微讲讲对斜率优化dp 的理解 前置知识 单调队列(栈) 平面直角坐标系 直线解析式 等式处理 dp状态设计 balabala...... 理解 其实斜率优化 dp 的原理很简单: 根据题目(斜率优化 dp 的题目一般都很裸)的…
https://www.luogu.org/problemnew/show/P3994 设dp[i] 表示第i个城市到根节点的最小花费 dp[i]=min{ (dis[i]-dis[j])*P[i]+Q[i]+dp[j] } 这是O(n^2)的 这个式子可以斜率优化 dp[i]+dis[j]*P[i]=dis[i]*P[i]+Q[i]+dp[j] 就是一条斜率为P[i]的直线,截(dis[j],dp[j])的最小截距 在根往下走的过程中,斜率单调递增 这就体现了 为什么题目中说“i号城市是j号城…
斜率优化DP的综合运用,对斜率优化的新理解. 详细介绍见『玩具装箱TOY 斜率优化DP』 土地征用 Land Acquisition(USACO08MAR) Description Farmer John is considering buying more land for the farm and has his eye on N (1 <= N <= 50,000) additional rectangular plots, each with integer dimensions (1…
打印文章 时间限制:9000/3000 MS(Java / Others)内存限制:131072/65536 K(Java / Others) 总共提交:14521已接受提交:4531 问题描述 零有一台旧的打印机,有时不能正常工作.由于它是古董,他仍然喜欢用它来打印文章.但是长时间工作太旧,肯定会磨损,所以用零成本来评价这个程度. 有一天,零想要打印一个有N个单词的文章,而每个单词我有一个打印费用Ci.另外,零知道在一行中打印k个字将花费 M是常数. 现在,零想要知道最低成本,以完美安排文章.…
题目描述  给出一棵以1为根的带边权有根树,对于每个根节点以外的点$v$,如果它与其某个祖先$a$的距离$d$不超过$l_v$,则可以花费$p_vd+q_v$的代价从$v$到$a$.问从每个点到1花费的最小代价(中途可以经停其它点) 输入 第 1 行包含2个非负整数 n,t,分别表示城市的个数和数据类型(其意义将在后面提到).输入文件的第 2 到 n 行,每行描述一个除SZ之外的城市.其中第 v 行包含 5 个非负整数 $f_v,s_v,p_v,q_v,l_v$,分别表示城市 v 的父亲城市,它…
(自己的理解:首先考虑单调队列,不行时考虑斜率,再不行就考虑不等式什么的东西) 当dp的状态转移方程dp[i]的状态i需要从前面(0~i-1)个状态找出最优子决策做转移时 我们常常需要双重循环 (一重循环跑状态 i,一重循环跑 i 的所有子状态)这样的时间复杂度是O(N^2)而 斜率优化或者四边形不等式优化后的DP 可以将时间复杂度缩减到O(N) O(N^2)可以优化到O(N) ,O(N^3)可以优化到O(N^2),依次类推 斜率优化DP和四边形不等式优化DP主要的原理就是利用斜率或者四边形不等…
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4709 课上讲的题,还是参考了博客...:https://www.cnblogs.com/GXZlegend/p/8615607.html 这道题和之前写的斜率优化不同的一点是用单调栈维护上凸壳,而且需要二分查找答案: 为什么感觉每次写出来的斜率优化DP都不一样...还是没有理解透彻... 代码如下: #include<iostream> #include<cstdio> #i…
[学习笔记]动态规划-斜率优化DP(超详细) [前言] 第一次写这么长的文章. 写完后感觉对斜优的理解又加深了一些. 斜优通常与决策单调性同时出现.可以说决策单调性是斜率优化的前提. 斜率优化 \(DP\),顾名思义就是利用斜率相关性质对 \(DP\) 进行优化. 斜率优化通常可以由两种方式来理解,需要灵活地运用数学上的数形结合,线性规划思想. 对于这样形式的 \(dp\) 方程:\(dp[i]=Min/Max(a[i]∗b[j]+c[j]+d[i])\),其中 \(b\) 严格单调递增. 该方…
这个题目中 斜率优化DP相当于存在一个 y = kx + z 然后给定 n 个对点 (x,y)  然后给你一个k, 要求你维护出这个z最小是多少. 那么对于给定的点来说 我们可以维护出一个下凸壳,因为如果存在一个上突壳的话,那么上突壳的点是一定不会被选上的. 所以对于解来说,只有下凸壳的点再会被选到. 所以我们就可以用单调队列维护处这个下凸壳. 假如我们保证给定的k是单调递增的, 那么我们就可以把前面一段不需要的东西给删掉. 假如k不是单调的,则我们就可以用二分找到第一个 >  询问k的答案.…
摆渡车的题解我已经写过一遍了,在这里,这次主要从斜率优化的角度讲一下摆渡车,并总结一下斜率优化会出现的一些奇奇怪怪的错误. 摆渡车 Description 有 n 名同学要乘坐摆渡车从人大附中前往人民大学,第 i 位同学在第 titi分钟去 等车.只有一辆摆渡车在工作,但摆渡车容量可以视为无限大.摆渡车从人大附中出发. 把车上的同学送到人民大学.再回到人大附中(去接其他同学),这样往返一趟总共花费m分钟(同学上下车时间忽略不计).摆渡车要将所有同学都送到人民大学. 凯凯很好奇,如果他能任意安排摆…
虽然以前学过斜率优化dp但是忘得和没学过一样了.就当是重新学了. 题意很简单(反人类),利用费用提前的思想,考虑这一次决策对当前以及对未来的贡献,设 \(f_i\) 为做完前 \(i\) 个任务的贡献,\(t_i\) 为时间前缀和, \(c_i\) 为费用前缀和,容易得到 \[f_i = Min_{0 \leq j < i} (f_j + t_i (c_i - c_j) + s (c_n - c_j)\] 直接暴力转移,时间复杂度 \(O(n^2)\) 考虑斜率优化,将转移关系变形为 \[f_j…
题目链接: 4518: [Sdoi2016]征途 Description Pine开始了从S地到T地的征途. 从S地到T地的路可以划分成n段,相邻两段路的分界点设有休息站. Pine计划用m天到达T地.除第m天外,每一天晚上Pine都必须在休息站过夜.所以,一段路必须在同一天中走完. Pine希望每一天走的路长度尽可能相近,所以他希望每一天走的路的长度的方差尽可能小. 帮助Pine求出最小方差是多少. 设方差是v,可以证明,v×m^2是一个整数.为了避免精度误差,输出结果时输出v×m^2.  …
题目链接: 1096: [ZJOI2007]仓库建设 Description L公司有N个工厂,由高到底分布在一座山上.如图所示,工厂1在山顶,工厂N在山脚.由于这座山处于高原内陆地区(干燥少雨),L公司一般把产品直接堆放在露天,以节省费用.突然有一天,L公司的总裁L先生接到气象部门的电话,被告知三天之后将有一场暴雨,于是L先生决定紧急在某些工厂建立一些仓库以免产品被淋坏.由于地形的不同,在不同工厂建立仓库的费用可能是不同的.第i个工厂目前已有成品Pi件,在第i个工厂位置建立仓库的费用是Ci.对…
题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=3156 分析: 简单的斜率优化DP…
1096: [ZJOI2007]仓库建设 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 3719  Solved: 1633[Submit][Status][Discuss] Description L公司有N个工厂,由高到底分布在一座山上.如图所示,工厂1在山顶,工厂N在山脚.由于这座山处于高原内陆地区(干燥少雨),L公司一般把产品直接堆放在露天,以节省费用.突然有一天,L公司的总裁L先生接到气象部门的电话,被告知三天之后将有一场暴雨,于是L先…
1010: [HNOI2008]玩具装箱toy Description P教授要去看奥运,但是他舍不下他的玩具,于是他决定把所有的玩具运到北京.他使用自己的压缩器进行压缩,其可以将任意物品变成一堆,再放到一种特殊的一维容器中.P教授有编号为1...N的N件玩具,第i件玩具经过压缩后变成一维长度为Ci.为了方便整理,P教授要求在一个一维容器中的玩具编号是连续的.同时如果一个一维容器中有多个玩具,那么两件玩具之间要加入一个单位长度的填充物,形式地说如果将第i件玩具到第j个玩具放到一个容器中,那么容器…